hechengQAQ

导航

 

一、填空题

(一)、基础知识

1.Python安装扩展库常用的是__pip__工具。

2.Python标准库math中用来计算平方根的函数是___sqrt___。

3.Python程序文献扩展名重要有__py__和__pyw__两种,其中后者常用于GUI程序(一种使用图形方式显示的计算机操作环境用户接口)。

4.Python源代码程序编译后的文献扩展名为__pyc___。

5.使用pip工具升级科学计算扩展库numpy的完整命令是__pip install --upgrade numpy____。

6.使用pip工具查看当前已安装的Python扩展库的完整命令是__pip list 或 pip freeze__。(pip freeze 通常用于打包环境)

7.Python中__None__表达空类型。

8.列表、元组、字符串是Python的___有序___(有序?无序)序列。

9.查看变量类型的Python内置函数是____type()____。

10.查看变量内存地址的Python内置函数是___id()____。

12、3为实部4为虚部,Python复数的表达形式为__3+4j__或__3+4J__。

13、Python运算符中用来计算整商的是___//___。(//整除,向下取整,往小的取,负数也是,如-3//2结果为-2;math.ceil()向上,math.floor(向下,round四舍六入五凑偶,若最后一位是5,则看前一位是奇数还是偶数,奇数向上取整成偶数,偶数向下取整还是偶数))

14、Python运算符中用来计算集合并集的是__|__。(|并集,&交集,-差集(表示只在第一个集合出现的元素),^对称差集(表示两个集合中都只出现过一次的元素))

A = {1, 2, 3}
B = {2, 3, 4}

print(A-B)  # {1}
print(A^B)  # {1,4}
# 并集
C = A | B
C = A.union(B)

# 交集
D = A & B
D = A.intersection(B)

# 差集
E = A - B
E = A.difference(B)

# 对称差集
F = A ^ B
F = A.symmetric_difference(B)

 

15使用运算符测试集合包含集合A是否为集合B的真子集的表达式可以写作____B>A___。(指向小的(真子集,A集合的每一个元素B集合都有))

16、__del__命令既可以删除列表中的一个元素,也可以删除整个列表。

17表达式 int('123', 16) 的值为____291___。(将十六进制的字符串123转化为十进制整数)

18表达式 int('123', 8) 的值为____83___。(将八进制的字符串'123'转化为10进制整数)

 

# 八进制转十进制(其他进制转十进制也是此逻辑)
"""
将八进制数中的每一位数字乘以8的相应次幂,从右往左依次为0次幂、1次幂、2次幂,以此类推。
将每一步得到的结果相加,即为所求的十进制数。
    例如,将八进制数 123 转换为十进制数:

  3*8**0+2*8**1+1*8**2=83


"""

# 十进制转八进制(十进制转其他进制也是此逻辑,转16进制就除以16)
"""
将十进制数除以8,得到商和余数。
将余数记录下来,然后将商作为新的被除数,重复步骤1,直到商为0为止。
将记录下来的余数倒序排列,即为所求的八进制数。
例如,将十进制数796转换成八进制数:

796 ÷ 8 = 99 ... 4
99 ÷ 8 = 12 ... 3
12 ÷ 8 = 1 ... 4
1 ÷ 8 = 0 ... 1

所以,796的八进制表示为1434。

如果要进行八进制和十六进制之间的转换,可以借助十进制或者二进制完成。

进制转换总结:
任何进制转10进制,每个数字按位与进制数相乘,然后相加得结果
10进制转任何其他进制,除以要转的进制数,商为0为止,倒序取余
8进制或16进制转2进制,8进制数每一位对应3位2进制,16进制则对应4位2进制
"""
 

19表达式 int('123') 的值为___123___。(int(x,base=10),int()函数可以将一个字符串转换为整数,它的第一个参数是要转换的字符串,第二个参数是字符串所表示的进制数,默认是10进制,int最终就是将数字转化成十进制的整数)

20、表达式 int('101',2) 的值为___5___。(将二进制的123转化为十进制数),表达式int('0b100', base=0)的值为___4___。

python int('0b100', base=0)的执行过程如下:
第一个参数为字符串,以"0b"开头,表示二进制数字100。
第二个参数为0,表示根据字符串的字面值来判断进制。
根据字符串字面值判断进制为二进制。
将二进制数字100转换为十进制数字4,返回整数4。

int函数的第一个参数如果是字符串,则必须满足:
  • 字符串只包含数字字符,如"123"
  • 字符串以加号或减号开头,后面跟着数字字符,如"+123","-456"
  • 字符串以"0x"或"0X"开头,后面跟着十六进制数字字符,如"0x1a","0X2B"
  • 字符串以"0o"或"0O"开头,后面跟着八进制数字字符,如"0o17","0O27"
  • 字符串以"0b"或"0B"开头,后面跟着二进制数字字符,如"0b101","0B111"

21、表达式 abs(-3) 的值为__3___。(abs为绝对值计算)

22、Python 3.x语句 print(1, 2, 3, sep=':') 的输出结果为__1:2:3___。(sep表示间隔符号,默认为一个空格符号)

23表达式 int(4**0.5) 的值为___2____。(平方根)

24、Python内置函数__len()__可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。

25、Python内置函数__max()___用来返回序列中的最大元素。

26、Python内置函数__min()__用来返回序列中的最小元素。

27、Python内置函数__sum()___用来返回数值型序列中所有元素之和。

28、为了提高Python代码运行速度和进行适当的保密,可以将Python程序文献编译为扩展名___pyc___的文献。

29、已知 x = 3,那么执行语句  x += 6 之后,x的值为____9___。(x=x+6)

30表达式 3 | 5 的值为__7__。(在Python中,|表示按位或运算符,即将两个数的二进制相同位数上的数进行或运算,相同位数上两个数都为0时,结果为0,否则为1。3的二进制为11,5的二进制为101,进行或运算为111,结果为7)

31表达式 3 & 6 的值为___2___。(&表示按位与运算符,对两个数二进制的每一位进行与操作,如果两个相应位都为1,则该位的结果为1,否则为0)

a = 10  # 10的二进制为1010
b = 18  # 18的二进制为10010
c = a & b  # 二进制的相与结果为0010,即2
print(c)  # 输出2

32、表达式 3 ** 2 的值为___9__。

33、表达式 3 * 2的值为___6___。

34表达式 3<<2 的值为___12___。(在Python中,3<<2是位运算符,表示将3的二进制数向左移动2位,即将二进制数11(3的二进制数)向左移动2位变成1100,然后将1100转化为十进制数,结果是12。)

35表达式 65 >> 1 的值为_______32______。(二进制数向右移动1位)

36表达式 chr(ord('a')^32) 的值为___'A'___。

# 计算原理:
"""
1.计算 'a' 的 ASCII 码值:使用 ord() 函数可以将字符转换为 ASCII 码值,因此 ord('a') 的结果是 97。

2.对 ASCII 码值进行异或操作:使用 ^ 运算符可以对两个数进行异或操作。在这里,将 97 和 32 进行异或操作,即 97 ^ 32,得到的结果是 65。

3.将异或操作的结果转换为字符:使用 chr() 函数可以将 ASCII 码值转换为对应的字符。因此,chr(65) 的结果是 'A'。
"""

 37表达式 chr(ord('a')-32) 的值为__'A'__。

38表达式 abs(3+4j) 的值为___5.0____。(abs() 函数可以用来获取数字的绝对值,包括整数、浮点数和复数。当传递一个复数作为参数传递给abs()函数时,它将返回该复数的大小,也就是原点(0,0)与复平面上的点(3,4)---(a,b)之间的距离,即复数的模。)

39表达式 callable(int) 的值为___True____。(callable()函数用于检查一个对象是否是可调用的)

40假设有Python程序文献abc.py,其中只有一条语句print(__name__),那么直接运行该程序时得到的结果为___main___。(__main__)

 """

__name__是Python的一个特殊变量,它通常用于判断当前模块是被导入还是被直接运行。当一个模块被直接运行时,Python会把__name__赋值为__main__,否则__name__的值为模块名。
这是一个常见的用法,可以使模块在被导入时不执行一些不必要的代码,而只在被直接运行时一些代码才执行。
在一个脚本或模块中,这个变量的值是 __main__,而在被导入的模块中,这个变量的值是模块的名称
"""

41、表达式16**0.5的值为___4.0____。(计算平方根,python中可以使用pow(x,y)计算,即pow(16,0.5);或者sqrt计算,即sqrt(16))

42、表达式type({3})的值为____set____。

43、表达式isinstance('Hello world', str)的值为____True____。

44、表达式 10^12 的值为__6__。(在python中^是计算二进制的异或操作符号,异或操作是一种位运算,即对两个二进制数进行操作,当二进制位相同时,结果为0,不同时,结果为1。)

 (二)、python序列

45、表达式[1, 2, 3]*3的执行结果为________([1, 2, 3, 1, 2, 3, 1, 2, 3])______________。

46、list(map(str, [1, 2, 3]))的执行结果为________[‘1’, ‘2’, ‘3’]_____________。(map函数接收一个函数和可迭代对象,将对象里的每个元素带入函数中执行并得到结果,map返回一个迭代器,list将迭代器转化为列表

47、语句x = 3==3, 5执行结束后,变量x的值为______(True, 5)_______。

# 执行原理
"""
1.首先进行编译,python将代码编译成字节码
2.然后进行解释(执行编译后的字节码),python会将栈顶的两个元素True,5弹出,然后将他们打包成元组对象入栈,最终栈顶元素是一个元组对象,将其赋值给x

"""

48、表达式 False+1 的值为______1____。

49、表达式[3] in [1, 2, 3, 4]的值为______False_____。

50、列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为   None  。(sort()是对源列表进行排序更改返回值为None,而sorted()不会对源列表进行更改,会返回一个新的排序后的对象

51、假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是_________[6, 7, 9, 11]___________。(包前不包后)

52、使用列表推导式生成包含10个数字5的列表,语句可以写为_____[5 for i in range(10)]__________。(列表推导式通常包含三个部分:循环次数、想插入的值、判断是否插入的条件。如[x**2 for x in range(-5, 5) if x >= -2]

53、假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_________c = dict(zip(a, b))____________。(zip,map,filter,reduce,reversed都是返回的对象,需要调用内置的数据类型方法转换,方便我们使用

补充知识:
"""
exec 与eval 对于字符串,exec 可以执行python代码,eval可以执行计算结果 """ print(eval("8+5")) func = "def fact(n):\n\treturn 1 if n==1 else n*fact(n-1)" exec(func) a = fact(5) print(a)

55、Python语句list(range(1,10,3))执行结果为_________[1,4,7]__________。(range(start, stop, step) 函数可以创建一个整数列表,其中 start 表示起始位置,stop 表示结束位置(不包括 stop),step 表示步长,默认为 1

56、表达式 list(range(5)) 的值为_______[0, 1, 2, 3, 4]_________。

57已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果为_____True______。

 

# 执行原理:
"""
因为Python为了提高运算速度,对于小的整数、短的字符串、空的元组等对象,会进行缓存处理。这些对象的缓存区域叫做“小整数池”或“字符串池”。对于整数而言,Python会缓存-5~256之间的整数。当我们创建一个整数时,Python会首先查看这个整数是否在缓存中,如果在,就返回缓存中的对象的引用,否则就创建一个新的对象。因此,对于a[1]和b[1]这两个整数而言,它们的值相同,因此它们的id也相同。
""" 

58、切片操作list(range(6))[::2]执行结果为______[0,2,4]__________。

59使用切片操作在列表对象x的开始处增长一个元素3的代码为____x[0:0] = [3]_____。

# 同理:
# 尾部添加
x[-1:-1] = [3]

# 中间某个位置添加
x[2:2] = [3]

# 注意赋值只能是可迭代的对象,如,x[3:3] = (2,)

60语句sorted([1, 2, 3], reverse=True) == reversed([1, 2, 3])执行结果为___False______。(前部分返回列表对象,后部分返回的是迭代器对象)

61表达式 sorted([111, 2, 33], key=lambda x: len(str(x))) 的值为______[2, 33, 111]__________。(我们可以将x理解为可迭代的每一项,通过计算每一项的长度来进行排序)

62、表达式 sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值为______[111, 33, 2]______。(长度的相反数进行排序)

63、已知x=3和y=5,执行语句 x, y = y, x 后x的值是__5__。

64、可以使用内置函数_______globals()________查看包含当前作用域内所有全局变量和值的字典。(globals())

65、可以使用内置函数_________locals()__________查看包含当前作用域内所有局部变量和值的字典。(locals()()

66、python中有的内置函数的源码是pass,那么具体的源码实现位置在哪里呢?又是怎么调用的?

# 如何调用的?python解释器干了什么?
"""
实际上是通过c语言实现的,由python解释器进行调用c语言实现的函数,如sorted(),虽然python源码中为pass,但是其实是调用了c语言实现的快速排序算法。Python解释器在内部维护了一个函数表,其中包含了所有内置函数的指针。当用户在Python中调用内置函数sorted时,Python解释器会根据函数名去查找这个函数表,找到对应的函数指针,然后调用这个函数指针所指向的排序函数,所以调用了c对应的函数。

在Python中,代码需要经过解释器转换成字节码,然后再执行。因此,在调用C语言排序函数的过程中,Python解释器会将该行代码转换为字节码,并将其发送给操作系统执行,而不是直接在Python解释器中执行该函数的源代码。当操作系统执行完调用C语言排序函数的代码后,它会将结果返回给Python解释器。Python解释器将结果转换成Python对象并将其返回给你的程序,你不需要关心底层的实现细节,只需要知道如何正确地使用Python API来调用C语言函数即可。在Python中,可以使用ctypes模块或Cython等工具,以便更方便地与C语言交互并调用C函数。
"""

67、字典对象的______get()_____方法可以获取指定“键”相应的“值”,并且可以在指定“键”不存在的时候返回指定值,假如不指定则返回None。

68、字典对象的______items()_______方法返回字典中的“键-值对”列表。

69、字典对象的_____keys()_______方法返回字典的“键”列表。

70、字典对象的________values()______方法返回字典的“值”列表。

71、已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为______{1: 2, 2: 3}__________。

72、表达式 {1, 2, 3, 4} - {3, 4, 5, 6}的值为_________{1, 2}_________。(做差集)

73、表达式set([1, 1, 2, 3])的值为__________{1,2,3}__________。

74、使用列表推导式得到100以内所有能被13整除的数的代码可以写作_____________[i for i in range(100) if i %13 == 0]______________________。

75、已知 x = [3, 5, 7],那么表达式 x[10:]的值为_______[]_____。

"""
原理:
具体来说,x[10:] 的操作可以分解成以下两个步骤:

获取下标为 10 的元素,由于列表中只有三个元素,因此该操作会返回 IndexError 异常;
对于步骤 1 中产生的异常,Python 不会报错,而是返回一个空列表。

即Python 中的切片操作不会引发索引越界错误
"""

76、已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为______[3, 5, 7, 1, 2]________。

77、已知 x = [3, 7, 5],那么执行语句 x.sort(reverse=True)之后,x的值为_______[7, 5, 3]__________。

80、已知 x = [3, 7, 5],那么执行语句 x = x.sort(reverse=True)之后,x的值为____None_____。

81、已知 x = [1, 11, 111],那么执行语句 x.sort(key=lambda x: len(str(x)), reverse=True) 之后,x的值为______[111, 11, 1]____________。

82表达式 list(zip([1,2], [3,4])) 的值为__________[(1, 3), (2, 4)]______________。(zip返回迭代器对象,list调用iter,next生成到列表中

83表达式 list(map(list,zip(*[[1, 2, 3], [4, 5, 6]]))) 的值为_______[[1, 4], [2, 5], [3, 6]]_________。(*为拆包列表,实际将列表分成两分,即zip([1,2,3],[4,5,6]),得到里面元素是三个元组,再将每一项元组转化成列表

"""
什么是拆包?
将一个可迭代对象中的元素赋给多个变量的过程:
序列解包:将一个序列(列表、元组等)中的元素分别赋值给多个变量。
字典解包:将一个字典中的键值对分别赋值给多个变量。
"""
# 将一个元组中的元素分别赋值给多个变量
x, y, z = (4, 5, 6)
print(x) # 输出:4
print(y) # 输出:5
print(z) # 输出:6

# 在循环中使用序列解包
my_list = [(1, 'a'), (2, 'b'), (3, 'c')]
for number, letter in my_list:
print(number, letter)

# 使用字典解包来遍历字典的键值对
for key, value in my_dict.items():
print(key, value)


# 使用*和**拆包可迭代对象,将可迭代对象(例如列表、元组或字典)解压成单独的元素:

# *操作符通常用于解压可迭代对象到函数的参数列表中。例如:

def myfunc(a, b, c):
    print(a, b, c)

mylist = [1, 2, 3]
myfunc(*mylist)

#此外,*操作符也可以用于在列表、元组和集合等可迭代对象之间进行拆包操作。例如:

mylist1 = [1, 2, 3]
mylist2 = [4, 5, 6]
mylist3 = [*mylist1, *mylist2]
print(mylist3)


# **操作符用于解压字典到关键字参数中。例如:

def myfunc(a, b, c):
    print(a, b, c)

mydict = {'a': 1, 'b': 2, 'c': 3}
myfunc(**mydict)   # 与myfunc(a=1, b=2, c=3)相同的结果。

"""
print(**mydict)报错,因为将mydict中的元素作为关键字参数传给print函数,有问题
"""

# 在字典中拆包,表示合并;函数中拆包表示关键字传参
{'x': 1, **{'y': 2}} -> {'x': 1, 'y': 2}

84、表达式 [x for x in [1,2,3,4,5] if x<3] 的值为_________[1,2]____________。

85表达式 [index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值为________[2, 4]__________。

86已知 x = [3,5,3,7],那么表达式 [x.index(i) for i in x if i==3] 的值为______[0,0]________。(x.index()找到第一个元素直接返回了

87已知列表 x = [1, 2],那么表达式 list(enumerate(x)) 的值为_______[(0, 1), (1, 2)]________。

88、已知 vec = [[1,2], [3,4]],则表达式 [col for row in vec for col in row] 的值为__________[1, 2, 3, 4]________________。

89已知 vec = [[1,2], [3,4]],则表达式 [[row[i] for row in vec] for i in range(len(vec[0]))] 的值为___________[[1, 3], [2, 4]]______________。

90已知 x = list(range(10)),则表达式 x[-4:] 的值为____[6, 7, 8, 9]______。(索引-4到后面,不是到前面

91已知 x = [3, 5, 7],那么执行语句 x[1:] = [2]之后,x的值为______[3,2]__________。(x[1:]包含最后一个元素,x[1:2]不包含,x[1:]为可迭代对象,更改值也得是可迭代对象,不能是整数

92、已知 x = [3, 5, 7],那么执行语句 x[:3] = [2]之后,x的值为_______[2]_________。(切片不会报错,只是会返回空列表

93已知x为非空列表,那么执行语句y = x[:]之后,id(x[0]) == id(y[0])的值为____True______。(相当于浅复制,列表嵌套的里层列表与原列表引用同一个对象,值同步;外层的列表全新复制,与原列表无关,但是刚开始引用的还是原列表中的对象地址)

"""
使用y = x[:]时,实际上是将x中的所有元素复制到了一个新的列表y中,那么x和y为不同的内存地址,两者之间并无关系,修改y中元素不会对x中的元素造成影响。但在不修改y元素前,y中元素的内存地址(id(y[0]))与x中对应的元素地址相同,原因是在复制时,y中元素是对x中的元素的引用,指向的是同一个内存地址。当对y[0]重新赋值时,重新分配内存空间,内存地址指向改变,id值变
这种情况只适用于可变对象,例如列表、字典等。如果x是一个不可变对象,例如字符串或者元组。
"""
python不可变对象:数字类型:int、float,complex;tuple;str;frozenset(不可变集合)

变量赋值逻辑:

1.变量本质上是指向对象的指针。在Python中,变量名实际上只是内存中一个保存了指向某个对象的地址的名称。
2.Python中的垃圾回收机制会自动管理内存,当某个对象没有任何变量名指向它时,该对象将被垃圾回收器回收。这意味着,在编写代码时,我们不需要手动释放内存。

94已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为_____[1,3,2,3]_______。(remove()跟具体的值,不是索引

95、表达式 len([i for i in range(10)]) 的值为_____10_____。

96、表达式 len(range(1,10)) 的值为______9_______。

97表达式 range(10)[-1] 的值为_______9_____。(range返回的可迭代对象可以跟索引)

98、表达式 range(10,20)[4] 的值为______14____。

99表达式 round(3.4) 的值为_____3______。

"""
round()函数会将结果四舍五入为偶数最近的数字;是Python中一个用于近似数值计算的有用工具
"""
round(4.5)  # 4
round(5.5)   # 6

# round(x, n=0):将x四舍五入到小数点后n位,如果n未提供,则默认为0。

round(3.14159, 2)   # 四舍五入到小数点后2位,3.14

"""
round()函数不仅适用于浮点数,也适用于其他任何数字类型(如整数、分数等)。
当ndigits参数为负数时,它表示要将number四舍五入到小数点左边的位数。例如,round(12345, -2)将返回12300,因为它是四舍五入到百位。
"""

 

103、已知 x = (3,),那么表达式 x * 3 的值为_____(3, 3, 3)________。

104假设列表对象x = [1, 1, 1],那么表达式id(x[0]) == id(x[2])的值为_______True______。

 

"""
python中列表、元组等,里面有相同的元素时,它们的内存地址是一样的,这叫对象的共享或引用,对其中一个元素进行更改不会影响其他相同的元素,相当于浅复制
"""
b = ["a","a", "b","r","a"]
print(id(b[0]) == id(b[4])) # True
tu = ("a","a")
print(id(tu[0]) == id(tu[1]))  # True

105已知列表 x = list(range(10)),那么执行语句 del x[::2]之后,x的值为_____[1, 3, 5, 7, 9]____。(原来还有这种写法,根据切片步长来一个一个删除

106、已知列表 x = [1, 2, 3, 4],那么执行语句 del x[1] 之后x的值为______[1, 3, 4]______。

107、表达式 [1] * 2 的值为________[1, 1]_________。

108、表达式 [1, 2] * 2 的值为______[1, 2, 1, 2]________。

109、已知列表 x = [1, 2, 3],那么执行语句 x.insert(1, 4) 只有,x的值为_____[1, 4, 2, 3]______。

110、已知列表 x = [1, 2, 3],那么执行语句 x.pop(0) 之后,x的值为____[2, 3]_____。

112已知 x = [[1]] * 3,那么执行语句 x[0][0] = 5之后,变量x的值为_______[[5], [5], [5]]_________。(因为在列表中有列表嵌套,这里相当于浅复制,外层更改并不影响其他元素,嵌套列表里层更改则都会改变,毕竟不是深复制,浅复制复制不了里层,所以都会改

113、表达式 list(map(lambda x: x+5, [1, 2, 3, 4, 5])) 的值为________[6, 7, 8, 9, 10]______________。

114表达式 {1, 2, 3, 4, 5} ^ {4, 5, 6, 7} 的值为___________{1, 2, 3, 6, 7}______________。(^异或操作符执行两集合的对称差集,即组合两集合都不同时存在的元素

115已知 x = [1, 2, 3],那么执行语句 x[len(x)-1:] = [4, 5, 6]之后,变量x的值为_________________[1, 2, 4, 5, 6]________________。(为什么不是[1,2,[4,5,6]]呢?因为等号左边是列表,若是具体的一个元素,则是列表嵌套的形式

116、表达式 len(range(1, 10)) 的值为______9_____。

117已知x是一个列表对象,那么执行语句 y = x[:] 之后表达式 id(x) == id(y) 的值为_____False______。(具体的元素是True,对x元素的引用,更改就False了,这是浅复制

118、表达式 sorted([13, 1, 237, 89, 100], key=lambda x: len(str(x))) 的值为______________[1, 13, 89, 237, 100]_____________________。

119、已知 x = {1:2, 2:3},那么表达式 x.get(3, 4) 的值为__4__。

120、已知 x = {1:2, 2:3},那么表达式 x.get(2, 4) 的值为___3___。

121、表达式 {1, 2, 3} | {3, 4, 5} 的值为__________{1, 2, 3, 4, 5}___________。(执行并集操作

122、表达式 {1, 2, 3} | {2, 3, 4} 的值为___________{1, 2, 3, 4}___________。

123、表达式 {1, 2, 3} & {3, 4, 5} 的值为_______{3}_______。(执行交集操作

125、表达式 {1, 2, 3} - {3, 4, 5} 的值为____{1,2}_____。(执行差集操作

126表达式 {1, 2, 3} < {3, 4, 5} 的值为_____False____。(< 表示一个集合是否是另一个集合的子集,指向的为子集。集合的运算符包括 |&-^<=<>=>== 和 !=。其中,|表示集合的并集,&表示集合的交集,-表示集合的差集,^表示集合的对称差集。<=

127、表达式 {1, 2, 3} < {1, 2, 4} 的值为_____False______。

128、表达式 [1,2,3].count(4) 的值为______0_________。(count计数的原理是遍历,找到相同的元素,然后计数,每使用一遍就会遍历一次,若数组过大不宜使用,影响性能

129、Python标准库random中的_____choice()______方法作用是从序列中随机选择1个元素。

130、Python标准库random中的sample(seq, k)方法作用是从序列中选择____不反复____(反复?不反复?)的k个元素。(用于从一个序列中随机选取指定数量的元素,且不重复的函数,如,random.sample(lst, 3),随机取lst序列的三个元素,不重复取一个值)

131、random模块中______shuffle()_______方法的作用是将列表中的元素随机乱序。(源码中是修改的原列表,没有返回值)

132、执行代码 x, y, z = sorted([1, 3, 2]) 之后,变量y的值为___2___。

133、表达式 (1, 2, 3)+(4, 5) 的值为________(1, 2, 3, 4, 5)__________。

134、表达式 dict(zip([1, 2], [3, 4])) 的值为_________________{1: 3, 2: 4}________________。

136已知 x = [[1,3,3], [2,3,1]],那么表达式 sorted(x, key=lambda item:item[0]+item[2]) 的值为_______[[2, 3, 1], [1, 3, 3]]_____。(item表示外层列表中的每一项,不是嵌套列表里的每一项,第一项为[1,3,3]排序条件为4,第二项[2,31]排序条件为3,所以得到结果

137已知 x = [[1,3,3], [2,3,1]],那么表达式 sorted(x, key=lambda item:(item[1],item[2])) 的值为______[[2, 3, 1], [1, 3, 3]]__________。(lambda表达式定义了一个匿名函数,该函数将每个子列表作为参数,然后返回一个元组(item[1],item[2]),按照这个元组的值进行排序,最左匹配原则,若该元组最左边的值小则排在前面,若相等则比较第二个元素,小的排在前面

138、已知 x = [[1,3,3], [2,3,1]],那么表达式 sorted(x, key=lambda item:(item[1], -item[2])) 的值为_____[[1, 3, 3], [2, 3, 1]]________。

139、已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为_____{1, 2, 3}_____。

140、已知 x = {1:1},那么执行语句 x[2] = 2之后,len(x)的值为_______2_____。

141、已知 x = {1:1, 2:2},那么执行语句 x[2] = 4之后,len(x)的值为_______2_____。

142假设已从标准库functools导入reduce()函数,那么表达式 reduce(lambda x, y: x-y, [1, 2, 3]) 的值为__-4__。(看了源码,先将1,2两元素传入计算得-1,作为x的参数,再将3传入,作为y的参数,所以为-4

143、假设已从标准库functools导入reduce()函数,那么表达式 reduce(lambda x, y: x+y, [1, 2, 3]) 的值为____。(6)

144假设已从标准库functools导入reduce()函数,那么表达式reduce(lambda x,y:max(x,y), [1,2,3,4,4,5])的值为____5_____。

145、已知有函数定义 def demo(*p):return sum(p),那么表达式 demo(1, 2, 3) 的值为__6____、表达式 demo(1, 2, 3, 4) 的值为_____10____。

146已知列表 x = [1, 2],那么连续执行命令 y = x和 y.append(3) 之后,x的值为____[1, 2, 3]____。(x存储[1,2]对象的地址,对它的引用,那么y=x,y对x的引用,实际上还是对[1,2]的引用,所以修改了原列表,与y = x[:]有区别

147已知列表 x = [1, 2],那么连续执行命令 y = x[:] 和 y.append(3) 之后,x的值为____[1, 2]____。(y = x[:]创建了新的空间给y,虽然刚开始y里的元素引用的是原x里的元素地址,但是当我值改变,不会影响原列表,只是不引用原列表元素,浅复制

148、已知列表 x = [1, 2],执行语句 y = x[:] 后,表达式 id(x) == id(y) 的值为____False___。(创建新空间了,原理还是根据id()内存地址,若相同,修改元素则同步)

149、已知列表 x = [1, 2],执行语句 y = x 后,表达式 id(x) == id(y) 的值为____True___。(对x的引用)

150、已知列表 x = [1, 2],执行语句 y = x 后,表达式 x is y 的值为___True____。

151、已知列表 x = [1, 2],执行语句 y = x[:] 后,表达式 x is not y 的值为___True____。

152、表达式 sorted(random.sample(range(5), 5)) 的值为__________[0, 1, 2, 3, 4]___________。(随机选取5个不反复的元素,并进行排序

153、表达式 [i for i in range(10) if i>8] 的值为_________[9]_______。

154、已知有列表 x = [[1, 2, 3], [4, 5, 6]],那么表达式 [[row[i] for row in x] for i in range(len(x[0]))] 的值为____________[[1, 4], [2, 5], [3, 6]]_______________。

155、执行语句 x,y,z = map(str, range(3)) 之后,变量y的值为______'1'_____。

156、已知列表 x = [1, 2],那么执行语句 x.extend([3]) 之后, x的值为_____[1,2,3]_______。

157、已知列表 x = [1, 2],那么执行语句 x.append([3]) 之后,x的值为______[1, 2, [3]]_______。

158表达式 print(0b10101) 的值为_____21_______。(0b10101 是一个二进制数的表示方式,前缀 0b 表示接下来的数字是二进制数。Python 解释器将其解释为十进制数 21,并将其传递给 print() 函数作为参数

159、已知 x = [1, 2, 3, 4, 5],那么执行语句 del x[:3] 之后,x的值为_____[4,5]_____。

160已知 x = range(1,4) 和 y = range(4,7),那么表达式 sum([i*j for i,j in zip(x,y)]) 的值为_____32_____。(zip函数返回的是一个迭代器,它生成的元素是由x和y中的对应元素构成的元组(默认)。在本例中,生成的元组序列为(1, 4), (2, 5), (3, 6))

161、表达式 [5 for i in range(3)] 的值为_______[5,5,5]________。

162表达式 {1, 2, 3} == {1, 3, 2} 的值为_____True______。(集合无序,元素不受顺序影响,值是相等的,所以为True;但是id不相等,所以用is则为False

163表达式 [1, 2, 3] == [1, 3, 2] 的值为______False______。(列表有序,只有元素和顺序一致,才相等

164、已知 x = [1, 2, 1],那么表达式 id(x[0]) == id(x[2]) 的值为________True_______。

165、表达式 3 not in [1, 2, 3]的值为____False______。

166、已知 x = [1, 2],那么执行语句 x[0:0] = [3, 3]之后,x的值为_____[3, 3, 1, 2]______。

167、已知 x = [1, 2],那么执行语句 x[0:1] = [3, 3]之后,x的值为_____[3,3,2]______。

168、已知 x = [1, 2, 3, 4, 5],那么执行语句 del x[1:3] 之后,x的值为______[1,4,5]______。

169、已知 x = [[1, 2, 3,], [4, 5, 6]],那么表达式 sum([i*j for i,j in zip(*x)]) 的值为___32___。

170、已知列表 x = [1, 2, 3] 和 y = [4, 5, 6],那么表达式 [(i,j) for i, j in zip(x,y) if i==3] 的值为_____[3,6]_______。

171、已知列表 x = [1.0, 2.0, 3.0],那么表达式 sum(x)/len(x) 的值为_____2.0______。

172已知 x = {1:2, 2:3, 3:4},那么表达式 sum(x) 的值为_____6______。(sum跟可迭代对象,字典就是可迭代对象,实际上是将键相加,若有键不是数字类型,那么会报错)

173已知 x = {1:2, 2:3, 3:4},那么表达式 sum(x.values()) 的值为_____9____。(values()返回可迭代对象

174、已知 x = [3, 2, 3, 3, 4],那么表达式 [index for index, value in enumerate(x) if value==3] 的值为_____[0,2,3]_______。

175、表达式 1234%1000//100 的值为_____2______。

176表达式 3 // 5 的值为_______0________。(// 是向下整除;而/是普通的除法,会保留小数)

177、表达式 [1, 2] + [3] 的值为__________[1, 2, 3]________。

178、表达式 (1,) + (2,) 的值为________(1,2)_____。

179、表达式 (1) + (2) 的值为_______3_____。

180已知 x, y = map(int, ['1', '2']),那么表达式 x + y 的值为___3____。

181已知列表 x = list(range(5)),那么执行语句 x.remove(3) 之后,表达式 x.index(4) 的值为___3_____。(元素3删除,那么元素4的索引就为3)

182、已知列表 x = [1, 3, 2],那么执行语句 x.reverse() 之后,x的值为______[2, 3, 1]______。(reverse修改的原列表,没有返回值;reverse与reversed,sort与sorted有异曲同工之妙

183、已知列表 x = [1, 3, 2],那么执行语句 x = x.reverse() 之后,x的值为_____None_______。

184已知x为非空列表,那么表达式 x.reverse() == list(reversed(x)) 的值为____False______。(等号左边返回的是None,右边返回迭代器然后转化为列表,是倒序后的列表

185已知x为非空列表,那么表达式 x.sort() == sorted(x) 的值为_____False_____。(左边修改的是原列表,无返回值None;右边返回新列表,不对原列表修改

186、已知列表 x = [1, 3, 2],那么执行语句 y = list(reversed(x)) 之后,x的值为_____[1, 3, 2]_____。

187、已知列表 x = [1, 3, 2],那么执行语句 y = list(reversed(x)) 之后,y的值为_____[2,3,1]_____。

188、已知列表x中包含超过5个以上的元素,那么表达式 x == x[:5]+x[5:] 的值为____True____。

189已知字典 x = {i:str(i+3) for i in range(3)},那么表达式 sum(x) 的值为___3___。(对字典键相加

190已知字典 x = {i:str(i+3) for i in range(3)},那么表达式 sum(item[0] for item in x.items()) 的值为______3_____。(x.items()返回列表包含元组的对象

191已知字典 x = {i:str(i+3) for i in range(3)},那么表达式 ''.join([item[1] for item in x.items()]) 的值为_______'345'______。(将列表的字符串用空进行拼接

192已知列表 x = [1, 3, 2],那么表达式 [value for index, value in enumerate(x) if index==2] 的值为_______[2]________。

193、已知列表 x = [1, 3, 2],那么执行语句 a, b, c = sorted(x) 之后,b的值为__2__。

194已知列表 x = [1, 3, 2],那么执行语句 a, b, c = map(str,sorted(x)) 之后,c的值为__'3'____。(虽然返回的是迭代器,但依然不影响拆包

195、表达式 set([1,2,3]) == {1, 2, 3} 的值为_____True_______。

196、表达式 set([1,2, 2,3]) == {1, 2, 3} 的值为_____True_______。

197表达式 '%c'%65 == str(65) 的值为______False_____。(左边将参数65传递给操作符,根据操作符的指示进行转化,转化成65对对应的ASCII码

198、表达式 '%s'%65 == str(65) 的值为______True_______。

199、表达式 chr(ord('b')^32) 的值为____'B'_____。(前面有计算例子

200表达式 'abc' in 'abdcefg' 的值为______False_______。(得连贯

201已知x为整数变量,那么表达式 int(hex(x), 16) == x 的值为______True_______。(x本就是十进制数,转化为十六进制后,又使用int转化为十进制数,所以相等

202、已知 x, y = 3, 5,那么执行x, y = y, x 之后,x的值为______5____。

203已知 x = 'abcd' 和 y = 'abcde',那么表达式 [i==j for i,j in zip(x,y)] 的值为_______[True, True, True, True]_________。(zip多出来的项不做对应

204、已知x = list(range(20)),那么表达式x[-1]的值为_________19___________。

205、已知x = 3+4j和y = 5+6j,那么表达式x+y的值为__________8+10j__________。(虚数与虚数相加,实数与实数相加

206、已知x = [3],那么执行x += [5]之后x的值为__________[3, 5]__________。

207、已知x = [3, 3, 4],那么表达式id(x[0])==id(x[1])的值为_________True_________。

208、表达式int('11', 2)的值为___________3___________。('11'为二进制数,int函数转化为十进制数,结果为3

209、表达式int('11', 8)的值为___________9____________。

210、表达式int(bin(54321), 2)的值为___________54321____________。(bin(54321) 返回一个字符串,表示十进制数 54321 的二进制形式,第二个参数设置为 2,表示将这个字符串解释为二进制数,执行int函数返回这个二进制数的十进制表示,为54321

211、表达式chr(ord('A')+1)的值为__________'B'__________。

212、表达式int(str(34)) == 34的值为_________True__________。

213、表达式list(str([3, 4])) == [3, 4]的值为________False_________。(将[3, 4]转化成字符串后,再转化成列表,'[',',',']'也是字符串的一部分,会成为列表中的元素,结果为['[', '3', ',', ' ', '4', ']']

214、表达式{1, 2, 3, 4, 5, 6} ^ {5, 6, 7, 8}的值为________{1, 2, 3, 4, 7, 8}__________。(对称差集,只存在一边的元素集合

215、表达式15 // 4的值为_________3_________。

216、表达式sorted({'a':3, 'b':9, 'c':78})的值为________['a', 'b', 'c']_________。(由于字典没有索引,所以没有顺序,所以当我们使用sorted()函数来对字典进行排序时,它只能返回字典中所有键的有序列表,而不能同时保留键和值的对应关系,若要保留键值对,可以使用items(),转化为元组进行排序

d = {'a': 3, 'b': 9, 'c': 78}
sorted_tuples = sorted(d.items(), key=lambda x: x[0])
# 对元组列表进行排序,key指定排序依据为元组中的第一个元素(即键)
print(sorted_tuples)   # [('a', 3), ('b', 9), ('c', 78)]

dict(sorted_tuples) # 两两元素的情况直接转成字典

217、表达式sorted({'a':3, 'b':9, 'c':78}.values())的值为______[3, 9, 78]_______。(values()返回可迭代对象

218、已知x = [3, 2, 4, 1],那么执行语句x = x.sort()之后,x的值为_____None_______。

219表达式list(filter(lambda x: x>5, range(10)))的值为________[6, 7, 8, 9]_________。

220已知x = list(range(20)),那么语句print(x[100:200])的输出结果为_______[]________。(切片不会报错,索引报错

221已知x = list(range(20)),那么执行语句x[:18] = []后列表x的值为______[18, 19]________。

222已知x = [1, 2, 3],那么连续执行y = x[:]和y.append(4)这两条语句之后,x的值为________[1, 2, 3]____________。(这里为浅复制,id(x[0]) = id(y[0]),虽然是指向一个元素地址,但是xy整体并没有关联)

223、已知x = [1, 2, 3],那么连续执行y = x和y.append(4)这两条语句之后,x的值为__________[1, 2, 3, 4]__________。

224、已知x = [1, 2, 3],那么连续执行y = [1, 2, 3]和y.append(4)这两条语句之后,x的值为_________[1, 2, 3]___________。

225、已知x = [[]] * 3,那么执行语句x[0].append(1)之后,x的值为__________[[1], [1], [1]]__________。

226、已知x = [[] for i in range(3)],那么执行语句x[0].append(1)之后,x的值为_________[[1], [], []]________。

227、已知x = ([1], [2]),那么执行语句x[0].append(3)后x的值为_______([1, 3], [2])_________。

228已知x = {1:1, 2:2},那么执行语句x.update({2:3, 3:3})之后,表达式sorted(x.items())的值为_________[(1, 1), (2, 3), (3, 3)]___________。(update将一个字典中的键值对更新到另一个字典中,重复的键覆盖)

229已知x = {1:1, 2:2},那么执行语句x[3] = 3之后,表达式sorted(x.items())的值为__________[(1, 1), (2, 2), (3, 3)]__________。(默认根据键排序,想根据值排序可使用lambda函数

230已知x = [1, 2, 3],那么表达式not (set(x*100)-set(x))的值为________True________。(x*100表示[1,2,3,1,2,3,1,2,3.....])

231、已知x = [1, 2, 3],那么表达式not (set(x*100)&set(x))的值为________False________。

232表达式{'x': 1, **{'y': 2}}的值为________{'x': 1, 'y': 2}___________。(拆包,在字典里拆包表示合并到字典中,作为函数拆包表示关键字参数

233表达式{*range(4), 4, *(5, 6, 7)}的值为___________{0, 1, 2, 3, 4, 5, 6, 7}_______。(可理解为*range(4)与*(5,6,7)一样,将可迭代对象解包成单个数字传入

234已知 x = [1,2,3,4,5],那么执行语句 x[::2] = range(3) 之后,x的值为______[0, 2, 1, 4, 2]_________。(写法很棒,使用步长更新列表中的部分值,等同于x[::2] = [0,1,2]

235已知 x = [1,2,3,4,5],那么执行语句 x[::2] = map(lambda y:y!=5,range(3)) 之后,x的值为_________[True, 2, True, 4, True]_______。

236已知 x = [1,2,3,4,5],那么执行语句 x[1::2] = sorted(x[1::2], reverse=True) 之后,x的值为_______[1, 4, 3, 2, 5]__________。(排序过后,步长取到x里想更改的值,倒序一下,重新对应赋值。说白了就是取到x里的值,然后对应赋值修改,修改时要跟原列表x)

237、表达式 True*3 的值为_____3_____。(True表示1

(三)、选择结构与循环结构

239、表达式 'ab' in 'acbed' 的值为____False____。(必须是ab连在一起的才为True

240假设n为整数,那么表达式 n&1 == n%2 的值为______True_______。(&按位与运算,对位二进制都为1结果为1,若n为奇数,n的二进制数最后一位为1,那么n&1就为1,n%2余数也为1;同理,若n为偶数n&1和n%2都为0,所以最后结果为True

241、关键字_____in_____用于测试一个对象是否是一个可迭代对象的元素。

242表达式 3<5>2 的值为_______True________。

"""
首先,比较运算符<会比较左边的操作数3和右边的操作数5。由于3小于5,所以这个比较结果为True。

接下来,比较运算符>会比较左边的操作数5和右边的操作数2。由于5大于2,所以这个比较结果也为True。

因此,整个表达式3 < 5 > 2的值为True。

需要注意的是,Python中的比较运算符可以连续使用,形成链式比较。在这种情况下,比较运算符会按照从左到右的顺序进行比较,并且只有所有比较都为True时,整个表达式的值才为True。
"""

243、已知 x = {'a':'b', 'c':'d'},那么表达式 'a' in x 的值为______True________。(首先是键作为成员,若'b' in x则为False,'b' in x.values()为True

247表达式 3 or 5 的值为____3____。(or会返回第一个真值,若已经得到一个真值则返回,不会再对后面的值进行计算,若都为假,or则返回最后一个值,如:a = 0 or False or None,a的值为None

249表达式 3 and 5 的值为_____5_______。(and和上面的or相反,and返回第一个假值,若都为真则返回最后一个

252、Python 3.x语句 for i in range(3):print(i, end=',') 的输出结果为_________0,1,2,____________。(结尾有个逗号)

253、Python 3.x语句 print(1, 2, 3, sep='|') 的输出结果为_______1|2|3_________。(sep表示中间的间隔,默认为一个空格,若不声明sep,结果为1 2 3

执行print("aaaa",file="test.txt")报错AttributeError: 'str' object has no attribute 'write'-------》要声明模式”w“

print的file参数接收一个文件对象,比如,通过print写文件数据:

with open("test.txt", "w") as file:
    print("aaaa", file=file)


file = open("test.txt", mode="w")
print("hello world", file=file)

254对于带有else子句的for循环和while循环,当循环因循环条件不成立而自然结束时___会_____(会?不会?)执行else中的代码。

258、Python关键字elif表达____else______和______if_____两个单词的缩写。

 

(四)、字符串与正则表达式

262、表达式 'abc' in ('abcdefg') 的值为______True________,表达式 'abc' in ['abcdefg'] 的值为_____False_________。(第一个表示字符串,元组需要加逗号)

264、表达式 '\x41' == 'A' 的值为______True_______。(\x表示十进制41的十六进制数所对应的ASCII字符是什么,这里41的十六进制为65,对应的ASCII是A

265、Python语句''.join(list('hello world!'))执行的结果是_________'hello world!'___________。

267、已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为______'3'_____。(字符串按照字符编码来进行排序(unicode或ASCII),整数则按照数值比较

269、已知列表对象x = ['11', '2', '3'],则表达式max(x, key=len) 的值为______'11'_____。(max的key参数接收一个函数,并且根据函数的返回值进行排序

276表达式 '%c'%65 的值为____'A'_____。('%c: 用于将一个整数转换为对应的ASCII字符,并将其插入到格式化字符串中)

277、表达式 '%s'%65 的值为_____'65'_____。

278表达式 '%d,%c' % (65, 65) 的值为_____'65,A'___。(%d: 用于将整数插入到格式化字符串中。)

280表达式 '{0:#d},{0:#x},{0:#o}'.format(65) 的值为______'65,0x41,0o101'_______。

 

"""
{0:#d}: 这是一个格式化占位符,表示将第一个参数(索引为0)作为十进制整数来格式化输出。由于传入的参数是65,因此该部分格式化为十进制整数65。
{0:#x}: 这也是一个格式化占位符,表示将第一个参数(索引为0)作为十六进制整数来格式化输出,并带有'0x'前缀。由于传入的参数是65,因此该部分格式化为十六进制整数0x41。
{0:#o}: 这是另一个格式化占位符,表示将第一个参数(索引为0)作为八进制整数来格式化输出,并带有'0o'前缀。由于传入的参数是65,因此该部分格式化为八进制整数0o101。
因此,整个表达式的结果为 '65,0x41,0o101'。注意,这里的前缀0x和0o分别表示十六进制和八进制的标识符。
"""

 

282表达式 isinstance('abcdefg', object) 的值为______True_______。(True)

283表达式 isinstance(3, object) 的值为______True_______。(3是int类型的实例,而int类型是继承自object类型的,python的所有对象都是object类派生的,一切皆对象

 

 

 

 

 

 

 持续更新中。。。。。。

posted on 2023-03-22 17:13  hechengQAQ  阅读(829)  评论(0编辑  收藏  举报