第16章 核心函数

学习要点

至少掌握69个常用函数中的大多数最常用函数,

包含数学运算函数(7个)∶abs、divmod、max、min、pow、round、sum;

类型转换函数(15个)∶bool、int、float、str、ord、chr、bin、hex、tuple、list、dict、set、enumerate、range、object;

序列操作函数(6个)all、any、filter、map、next、sorted ;

对象操作函数(6个)help、dir、type、ascii、format、vars;

交互操作函数(2个)print、input;

文件操作函数(1个)open。

对标内容

记住常用核心内置函数的功能及用法。

数学运算函数

知识点详解

abs(x)

该函数返回数字的绝对值。

参数x为数值表达式。

函数返回x(数字)的绝对值。

例如∶

>>> abs(3.9)
3.9
>>> abs(-3.9)
3.9

divmod(a,b)

该函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a//b,a%b)。

参数a为数字,b为数字。

例如∶

>>> divmod(7,2)
(3, 1)

易错点

(1)divmod()函数返回的是商和余数组成的元组,不是列表。

(2)余数的符号由第二个参数的符号决定,如下所示。

>>> divmod(-7,2)
(-4, 1)
>>> divmod(7,-2)
(-4, -1)
>>> divmod(-7,-2)
(3, -1)

模拟考题

考题1 单选题

关于abs()函数,描述不正确的是()。

A. abs()函数的功能是取整数的绝对值

B. abs()函数的功能是取实数的绝对值

C. abs()函数的功能是取一个数的绝对值

D. 负数的绝对值是正数

正确答案∶A

解析∶本题考核对 abs()函数的理解。

考题2 判断题

divmod()函数的返回值是一个包含商和余数的列表。( )

答案∶错误

解析∶ divmod() 函数的返回值是一个包含商和余数的元组。

类型转换函数

知识点详解

bool()

用于将给定参数转换为布尔类型,如果没有参数,则返回False。以下展示了使用 bool() 函数的实例。

>>> bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True

ord("字符串")

该函数的返回值类型为int,返回参数所对应的 ASCII码值,如下例所示。ASCI码表如表16-1所示。

>>> ord("0")
48

167

168

chr(数值表达式)

该函数的返回值类型为字符串,返回参数所对应的ASCII码字符串,如下例所示。

>>> print(chr(78))
N

set()

该函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

以下实例展示了set()函数的使用方法。

>>> x = set ('runoob')
>>> y = set('google')
>>> x,y
({'o', 'u', 'b', 'r', 'n'}, {'g', 'l', 'o', 'e'})    #重复的元素被删除
>>> x&y            #交集
{'o'}
>>> x|y            #并集
{'o', 'l', 'g', 'u', 'e', 'b', 'r', 'n'}
>>> x-y            #差集
{'n', 'r', 'u', 'b'}

enumerate()

该函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环中。

普通的 for 循环如下所示。

>>> l=[78,98,69,85]
>>> for i in l:
        print(i)    
78
98
69
85

使用enumerate()函数的 for循环如下所示。

>>> l=[78,98,69,85]
>>> for a,i in enumerate(l):
        print( a,i)

0 78
1 98
2 69
3 85

object()

object类是Python中所有类的基类,如果定义一个类时没有指定继承哪个类,则默认继承 object 类。object()函数无参数,返回一个新的无特征对象。

>>> object()
<object object at 0x000001A9F1B24CB0>

易错点

(1)bool()函数的参数与返回值的记忆问题。

(2)set()函数的简单运算。

模拟考题

考题1 判断题

bool()、bool(None)、bool(")、bool(['']) 这5个表达式输出的结果都是False。

答案∶错误

解析∶ bool(['']) 列表参数中有一个字符串元素。

考题2 判断题

在 Python中,执行 print(ord('a')+12)语句,能够得到一个数字结果。

答案∶正确

解析∶ ord('a')的结果是数字,再加12仍旧是数字。

序列操作函数

知识点详解

all()

该函数用于判断给定的可迭代参数中的所有元素是否都为 True,如果是则返回 True,否则返回 False。

元素除了值是0、空、None、False外都算 True。

以下展示了使用all()函数的实例。

>>> all(['a''b''c''d'])        #列表中的元素都不为空或0 
True
>>> all(['a','b','','d'])         #列表中存在一个空元素
False
>>> all([0,1,2,3])                    #列表中存在一个值为0的元素
False
>>> all(('a''b''c''d'))        #元组中的元素都不为空或0 
True
>>> all(('a''b''''d'))         #元组中存在一个空元素
False
>> all((0,1,2,3))                  #元组中存在一个值为0的元素
False
>>> all([])                          #空列表
True 
>>> all(())                          # 空元组
True

说明:all相当于逻辑运算符的and:找False,找不到就是True,找到了就是Fasle

any()

该函数用于判断给定的可迭代参数iterable是否全部为False,是则返回False,否则返回True。

元素除了值是0、空、None、False 外都算 True。

>>> any(['a''b''c''d'])         #列表中的元素都不为空或0 
True
>>> any(['a''b''''d'])         #列表中存在一个为空的元素
True
>>> any([0,'',False])              #列表中的元素全为0、空、False 
False
>>> any(('a''b''c''d'))        #元组中的元素都不为空或0 
True
>>> any(('a''b''''d'))        #元组中存在一个空元素
True
>>> any((0,'',False))              #元组中的元素全为0、空、False 
False
>>> any([])                          #空列表
False
>>> any(())                          #空元组
False

说明:any相当于逻辑运算符or:找True,找不到就是False,找到了就是True

filter()

该函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象。如果要将结果转换为列表,可以使用 list()函数来转换。

该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或False,最后将返回True 的元素放到新列表中。

filter()函数的实例∶过滤出列表中的所有奇数。

def jishu (n):
    return n%2 ==1
newlist = filter(jishu,[1,2,3,4,5,6,7,8,9,10])
n=list(newlist)
print(n)

运行结果∶

[1, 3, 5, 7, 9]

map(function,iterable,…..)

map()是 Python 的内置函数,会根据提供的函数对指定的序列做映射。

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列。

把函数依次作用在列表中的每一个元素上,得到一个新的列表并返回。注意,map()函数不改变原列表,而是返回一个新列表,如下例所示。

def square (x):
    return x**2
l=list(map(square,[1,2,3,4,5]))
print(l)

运行结果∶

[1, 4, 9, 16, 25]

通过使用lambda 匿名函数的方法使用map()函数,如下例所示。

l=list(map(lambda x,y:x+y,[1,3,5,7,9],[2,4,6,8,10]))
print(l)

运算结果∶

[3, 7, 11, 15, 19]

通过 lambda 函数使返回值是一个元组,如下例所示。

l=list(map(lambda x,y:(x**y,x+y),[2,4,6],[3,2,1]))
print(l)

运算结果∶

[(8, 5), (16, 6), (6, 7)]

map()函数还可以实现类型转换。

例1 将元组转换为列表

l=list(map(int,(1,2,3)))
print (1)

运算结果∶

[1,2,3]

例2 将字符串转换为列表

l=list(map(int,'1234'))
print(l)

运算结果∶

[1,2,3,4]

例3 提取字典中的键,并将结果放在一个列表中

l=list(map(int,{1:2,2:3,3:4}))
print(l)

运算结果∶

[1,2,3]

易错点

(1)all()与any()这两个函数的用法容易混淆。

(2)熟记map()函数的简单用法。

模拟考题

考题1 单选题

以下表达式的值为Fasle的是( )。

A. all() B. any((0,1)) C. all ((0,)) D. any(['a','b',",'d'])

答案C

解析∶本题考核 all()与any()这两个函数的用法。

考题2 判断题

在Python中,函数all([])将返回False。( )

答案:错误

解析空列表返回True。

对象操作函数

知识点详解

help()

该函数用于查看函数或模块用途的详细说明,返回对象为帮助信息。

以下实例展示了help()函数的使用方法。

>>>help('sys')        #查看sys模块的帮助信息
……显示帮助信息……
>>>help('str')        #查看str数据类型的帮助信息
……显示帮助信息……
>>>a=[1,2,3]
>>>help(a)            #查看列表的帮助信息
……显示帮助信息……
>>>help(a.append)    #显示列表的 append 方法的帮助信息
……显示帮助信息……

dir([object])

参数object为对象、变量、类型。该函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

>>> dir()      #获得当前模块的属性列表
>>> dir([])    #查看列表的方法

对dir()函数了解即可。

ascii()

该函数返回一个表示对象的字符串,如下例所示。

>>> ascii((1,2))
'(1, 2)'
>>> ascii([1,2])
'[1, 2]'
>>> ascii({1:2,'name':5})
"{1: 2, 'name': 5}"
>>> ascii('?')
"'?'"
>>> ascii(set([1,1,2,3]))
'{1, 2, 3}'

vars([object])

该函数返回对象object的属性和属性值的字典对象如果没有参数,就打印当前调用位置的属性和属性值,如下例所示。

>>> a=2 
>>> b=vars()
>>>b["a"]
2

对vars()函数了解即可。

易错点

(1)本节大多数内容了解即可。

(2)注意不要混淆 ascii()函数与ord()函数的用法。

模拟考题

考题1 单选题

asci(chr(6)) 的值是()。

A.'A' B. 65 C. "A" D. '65'

答案∶C

解析∶本题考核 ascii()函数与chr()函数的用法。

考题2 单选题

下列选项中具有查看函数或模块说明功能的函数是()。

A.help()函数 B.ascii()函数 C.dir()函数 D.vars()函数

答案∶A

解析∶本题考核对上述函数用法的了解。

核心函数单元测试

模拟考题

一、单选题(共20题,每题4分,共80分)

1、print(min(80,100,max(50,60,70)))的运行结果是?( )

A. 80

B. 100

C. 50

D. 70

2、print(divmod(223,11))的运行结果是?( )

A. 20, 3

B. (20, 3)

C. 3, 20

D. (3, 20)

3、表达式max(3,min(5,1,7))的结果是?( )

A. 1

B. 3

C. 5

D. 7

4、下列表达式的结果不为10的是?( )

A. sum([1,2,3,4])

B. sum((1,2,3),4

C. sum([1,2,3],4)

D. sum([1,2],[3,4])

5、使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表L=['1','3','5','7','9']转换为列表[1,3,5,7,9]的函数写法为?( )

A. map(int,L)

B. list(map(int,L))

C. map(L,int)

D. list(map(L,int))

6、以下关于len()函数的说法中错误的是?( )

A. len()函数可以用于返回字符串中的字符数

B. len()函数可以用于返回列表中的元素个数

C. len("I love China" )的结果为10

D. len("I love China" )的结果为12

7、去掉列表中的部分数据,例如去掉列表[1,2,3,4,5,6,7,8,9]中3的倍数,可以使用哪一函数来实现?( )

A. map

B. filter

C. zip

D. enumerate

8、a=3.1415926

​ round(a,2)

运行结果是?( )

A. 3

B. 3.14

C. 3.141

D. 3.1415926

9、round(20/3) 的返回值是以下哪一项?

A. 6

B. 2

C. 7

D. 1

10、a=5.12596

​ print(round(a,2)) 运行结果是?( )

A. 5

B. 5.1

C. 5.12

D. 5.13

11、type([{2.6}])运行的结果是?( )

A. float

B. dict

C. True

D. list

12、set('hello')运行结果是?( )

A. ('h', 'e', 'l', 'l','o')

B. {'h', 'e', 'l', 'l','o'}

C. {'e', 'h', 'l', 'o'}

D. ('e', 'h', 'l', 'o')

13、 divmod(100,3)的执行结果是?( )

A. (1, 33)

B. (33, 1)

C. [33,1]

D. [1,33]

14、以下表达式的值为True是?( )

A. bool(2022)

B. bool(0)

C. bool()

D. bool({})

15、已知A的ASCII码值为65, s=”China” k=abs(-4.8) 则表达式ord(min(s))+k的值是?( )

A. 71.8

B. 63

C. 61

D. 62

16、divmod(8,5)的结果是?( )

A. 1

B. 3

C. (1,3)

D. [1,3]

17、若有代码:

name=[“李明”,“王宁”,“朱倩”]
for a,i in enumerate(name):
    print(a,i)

则显示的结果是?( )

A.

0  李明
1  王宁
2  朱倩

B.

李明
王宁
朱倩

C. 李明,王宁,朱倩

D.

1 李明

2 王宁

3 朱倩

18、下列数据对象中,不能使用len()函数获取数据对象长度的是?( )

A. 2023

B. [2, 0, 2, 3]

C. ["Go", "China!"]

D. ("Go", "China!")

19、下面程序执行结果是?( )

s='123456789'
print(min(s)+max(s))

A. 1

B. 9

C. 10

D. 19

20、divmod()是Python的内置函数。对应变量x和y,divmod(y,x)返回的结果是?( )

A. (x//y, x%y)

B. (x%y, x//y)

C. (y//x, y%x)

D. (y%x,y//x)

二、判断题(共5题,每题4分,共20分)

21、在Python中,filter()函数的参数有两个,第一必须是函数,第二个必须是序列。

​ 正确 错误

22、abs()函数的功能是将对小数进行取整,abs(-2.3)的运行结果是2。

​ 正确 错误

23、set是一个不允许元素重复的集合。由于set里的元素位置允许随意,所以不能用索引访问

​ 正确 错误

24、sum()函数可以对列表进行求和,但不能对元组进行求和

​ 正确 错误

25、enumerate()函数用于将列表、元组或字符串等可遍历的数据对象组合为一个索引序列。( )

​ 正确 错误

答案

一、单选题

1、D 2、B

3、B

试题解析:先进行最小值运算min(5,1,7),结果是1,再执行最大值运算max(3,1),结果是3。

4、D

试题解析:sum() 方法对序列进行求和计算。

5、B

试题解析:注意两个点,一个是map的参数为类型、序列。另外,map生成的对象不是列表,需要强制转换。

6、C

试题解析:len("I love China" )的结果为12,所以C项错误。空格也要统计入内

7、B

试题解析:过滤函数使用filter,map是按一定规则得到一个新序列,zip是组合序列,enumerate是为序列添加索引。

8、B

试题解析:保留2位小数

9、C

10、D

试题解析:保留2位小数,四舍五入,所以结果是5.13。

11、D

试题解析:type([{2.6}])运行的结果是list。

12、C

试题解析:集合去重,所以结果为{'e', 'h', 'l', 'o'}

13、B

试题解析:divmod(100,3)的运行结果为(33, 1)。

14、A

试题解析:bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。bool({2022})中间有元素,所以为True。

15、A

试题解析:min()取最小值,ord()求得对应字符的ASCII码值,abs()则为绝对值函数。C的ASCII码值为67,67+4.8=71.8

16、C

试题解析:divmod()函数返回的是商和余数组成的元组,而不是列表,也不是单个的商或余数

17、A

试题解析:enumerate()函数用于将序列对象组合为索引与数据元素的元组。程序中的a和i分别遍历元组中的索引和数据元素。索引从0开始

18、A

试题解析:len函数用于返回字符串、列表、字典、元组等的长度。

19、D

试题解析:s='123456789',min(s)='1',max(s)='9',所以结果为两个字符串相连,正确答案为:19。

20、C

试题解析:考查divmod()函数的用法

二、判断题

21、正确

22、错误

试题解析:abs()函数的功能是求绝对值。abs(-2.3)的运行结果是2.3。

23、正确 24、错误 25、正确

Copyright © all right reserved,powered by Gitbook该文件修订时间: 2023-07-02 10:00:11