image

编辑人: 沉寂于曾经

calendar2025-06-17

message8

visits605

2023月09月Python三级理论答案及解析

一、单选题

1、有一组数据存在列表中,things=[“桌子”,“椅子”,“茶几”,“沙发”,“西瓜”,“苹果”,“草莓”,“香蕉”],若想要输出其中的水果数据,则下列处理恰当的是?( )

A、print(things) 

B、print(things[:4])

C、print(things[4:])

D、print(things[5:8])

解析:【喵呜刷题小喵解析】在Python中,列表的索引是从0开始的。要输出列表中的水果数据,我们需要找到水果在列表中的起始位置。从题目给出的列表中,我们可以看到"西瓜"是列表中的第5个元素,因此水果数据的起始索引是4。所以,要输出列表中的水果数据,应该使用`things[4:]`,这将输出从索引4开始到列表末尾的所有元素,即所有的水果。因此,选项C是恰当的。

2、学期末学校进行了体育测试,其中跳绳项目每人有三次机会,取最好的成绩为最后得分。小贝、小李和小司三人的成绩数据如下:tscores=[[“小贝”,132,126,130],[“小李”,117,120,123],[“小司”,129,140,137]],那么要得到小贝的第二次成绩,下列操作正确的是?( )

A、tscores[0][2]

B、tscores[1][1]

C、tscores[0[2]]

D、tscores[1[1]]

解析:【喵呜刷题小喵解析】题目中给出了一个列表tscores,其中包含了小贝、小李和小司三人的跳绳成绩。列表中的每个元素都是一个包含姓名和三次成绩的子列表。要得到小贝的第二次成绩,我们需要找到小贝对应的子列表,并从中取出第二次的成绩。在Python中,列表的索引是从0开始的,所以小贝对应的子列表的索引是0。因此,小贝的第二次成绩可以通过tscores[0][1]来获取,而不是tscores[0][2]。所以选项A tscores[0][2]是错误的,正确答案应该是tscores[0][1]。因此,要得到小贝的第二次成绩,正确的操作是tscores[0][1]。

3、小贝、小李和小司三人三次跳绳的成绩数据如下:tscores=[[“小贝”,132,126,130],[“小李”,117,120,123],[“小司”,129,140,137]],若要输出小李同学的最好成绩,则正确的处理方式是?( )

A、max(tscores[1])

B、max(tscores[1][1:])

C、tscores[1].max()

D、tscores[1][1: ].max()

解析:【喵呜刷题小喵解析】首先,我们需要明确题目中给出的数据格式。`tscores`是一个包含三个子列表的列表,每个子列表代表一个同学的三次跳绳成绩。例如,`tscores[0]`代表小贝的三次成绩,`tscores[1]`代表小李的三次成绩,`tscores[2]`代表小司的三次成绩。要找出小李的最好成绩,我们需要从`tscores[1]`中找出最大的数。因此,我们需要使用`max()`函数,并且传入`tscores[1]`作为参数。但是,`tscores[1]`是一个列表,所以我们需要确保只传入小李的成绩,而不是整个子列表。因此,我们应该使用切片操作`tscores[1][1:]`来传入从第二个元素开始的子列表,这样就可以确保只考虑小李的成绩。所以,正确的处理方式是`max(tscores[1][1:])`。因此,答案选B。

4、

有如下代码: gs=[‘众鸟高飞尽’,‘孤云独去闲’,‘相看两不厌’,‘只有敬亭山’] f=open(‘jts.txt’,‘w’) f.write(‘,’.join(gs)+‘\n’) f.close() 有关于上述代码,正确的说法是?( )

A、在执行代码前,必须要先新建一个"jts.txt"的文件

B、在文件"jts.txt"中,所有相邻诗句之间将发生换行

C、f.write(','.join(gs)+'\n')也可以用f.write('\n'.join(gs)+',')替换,显示结果是相同的

D、该段代码的主要功能是将列表gs中的四句古诗写入到"jts.txt"文件中,诗句之间以逗号连成一行

解析:【喵呜刷题小喵解析】首先,从给定的代码来看,代码本身并没有明确说明在执行前需要新建一个"jts.txt"的文件,因此选项A不正确。在代码执行后,打开"jts.txt"文件,会看到内容如下:"众鸟高飞尽,孤云独去闲,相看两不厌,只有敬亭山",并没有发生换行,所以选项B也不正确。再来看选项C,f.write(','.join(gs)+'\n')的作用是将列表gs中的所有元素(诗句)以逗号连接后写入文件,并在最后加上一个换行符。而f.write('\n'.join(gs)+',')的意思是以换行符连接列表gs中的元素,并在最后加上一个逗号,这显然与代码的实际功能不符,所以选项C也不正确。最后,从代码可以看出,该段代码的主要功能是将列表gs中的四句古诗写入到"jts.txt"文件中,诗句之间以逗号连成一行,因此选项D是正确的。

5、有关于简单文件的读写,下列说法正确的是?( )

A、可以用Python内置的open()函数打开文件

B、对文件进行读取操作,我们可以用write()函数

C、对文件进行写入操作,我们可以用close()函数

D、关闭文件可以用read()函数

解析:【喵呜刷题小喵解析】:在Python中,对文件进行读写操作,需要使用Python内置的`open()`函数打开文件。因此,选项A是正确的。选项B错误,因为对文件进行读取操作,应该使用`read()`函数,而不是`write()`函数。选项C错误,因为对文件进行写入操作,应该使用`write()`函数,而不是`close()`函数。`close()`函数用于关闭文件,而不是写入操作。选项D错误,因为关闭文件应该使用`close()`函数,而不是`read()`函数。

6、运行函数 hex(?) 之后,得到结果是’0xa’,请问括号中?号处应填?( )

A、"9"

B、9

C、"10"

D、10

解析:【喵呜刷题小喵解析】在Python中,`hex()`函数用于将一个整数转换为十六进制字符串。给定结果为`'0xa'`,它表示十六进制数10。在十进制中,10等于10。因此,括号中应填入的数字是10。选项D是正确的。

7、十六进制数100,对应的十进制数是?( )

A、128

B、256

C、28

D、56

解析:【喵呜刷题小喵解析】:十六进制数100,转换为十进制数,需要按照十六进制到十进制的转换规则进行。十六进制的100,可以拆分为1和00,其中1代表十六进制的10,即十进制的16,00代表十进制的0。因此,十六进制数100转换为十进制数为16*16^1+0*16^0=256。所以,对应的十进制数是256,选项B正确。

8、int()函数可以将非十进制数或数字字符串转换为十进制数,以下关于int()函数的使用,正确的是?( )

A、int("0b1010",10)

B、int("1010",10)

C、int("0o50",10)

D、int("80",8)

解析:【喵呜刷题小喵解析】:int()函数用于将数字字符串或非十进制数转换为十进制数。A选项:int("0b1010",10)这个调用试图将字符串"0b1010"(二进制字符串)转换为一个十进制数,但是int()函数不接受两个参数。通常,int()函数只需要一个参数,即要转换的字符串或数字。因此,A选项是错误的。B选项:int("1010",10)这个调用将字符串"1010"(十进制字符串)转换为一个十进制数。字符串"1010"表示十进制数10,因此int("1010",10)返回10,这是正确的。C选项:int("0o50",10)这个调用试图将字符串"0o50"(八进制字符串)转换为一个十进制数,但是int()函数不接受第二个参数10,因为10不是"0o50"的有效基数。因此,C选项是错误的。D选项:int("80",8)这个调用将字符串"80"(八进制字符串)转换为一个十进制数。但是,int()函数会自动检测并处理以0x或0X开头的字符串为十六进制,以0开头的字符串为八进制。因此,字符串"80"将被int()函数识别为十进制数,而不是八进制数。因此,D选项是错误的。因此,正确答案是B选项。

9、下列4个表达式中,答案不是整数6的是?( )

A、abs(-6)

B、int(6.88)

C、round(5.55)

D、min(float(6),9,8,7)

解析:【喵呜刷题小喵解析】对于选项A,abs(-6)返回-6的绝对值,即6,答案为整数6;对于选项B,int(6.88)返回6.88的整数部分,即6,答案为整数6;对于选项C,round(5.55)返回5.55的四舍五入值,即6,答案为整数6;对于选项D,min(float(6),9,8,7)返回四个数中的最小值,由于float(6)将6转换为浮点数6.0,所以min函数返回的是6.0,而不是整数6。因此,答案不是整数6的是选项D。

10、

键盘输入"杭州亚运会即将于2023年9月23日至10月8日举办。",以下代码的输出结果是?( ) try: n=input(“请输入文字:”) x=n.count(“2”) print(x) except: print(“程序执行错误”)

A、程序执行错误

B、2

C、3

D、15

解析:【喵呜刷题小喵解析】根据题目中的代码,首先会提示用户输入文字,用户输入的是"杭州亚运会即将于2023年9月23日至10月8日举办"。接着,代码会计算用户输入的文字中"2"这个字符出现了多少次。因为"2"出现了3次,所以代码会输出3。如果代码执行过程中出现了异常,那么会输出"程序执行错误"。根据代码逻辑和给定的输入,输出的结果应该是3,因此正确选项是C。

11、初学者常采用异常处理解决程序中出现的意外情况,下面语句的执行结果是?( )
try:
s1 = ‘我爱中国’
s2 = 2023
s = s1 + s2
print(s)
except:
print(‘错误’)
finally:
print(‘程序结束’)

A、我爱中国2023程序结束

B、错误 程序结束

C、我爱中国2023

D、错误

解析:【喵呜刷题小喵解析】根据Python的语法规则,`s1` 是一个字符串,`s2` 是一个整数,它们不能直接进行加法运算。当执行到 `s = s1 + s2` 时,会抛出一个TypeError异常,表示字符串和整数不能直接相加。由于异常处理的存在,程序会跳过 `s = s1 + s2` 和 `print(s)`,直接执行 `except` 下的代码,输出 "错误"。最后,无论是否有异常,`finally` 下的代码都会被执行,输出 "程序结束"。因此,最终输出结果为 "错误 程序结束"。

12、列表中有6个数据,使用冒泡排序算法进行从小到大排序,最多需要处理几遍?( )

A、3

B、4

C、5

D、6

解析:【喵呜刷题小喵解析】冒泡排序算法的基本思想是比较相邻的元素,如果顺序错误则交换它们。在每一遍遍历中,最大的元素会“冒泡”到列表的末尾。因此,对于6个数据,最多需要处理5遍,每遍遍历一次,将最大的元素放到末尾,直到整个列表排序完成。所以,最多需要处理5遍,选项C正确。

13、对一组数据[5, 2, 6, 4, 8, 1, 7, 3]进行排序,使用冒泡排序按从大到小的顺序进行排列,则第2轮排序过后的结果是?( )

A、2, 4, 5, 1, 6, 3, 7, 8

B、6, 5, 8, 4, 7, 3, 2, 1

C、5, 6, 4, 8, 2, 7, 3, 1

D、5, 6, 4, 8, 7, 3, 2, 1

解析:【喵呜刷题小喵解析】冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。在第一次遍历过程中,最大元素会被“冒泡”到数列的最后。第二次遍历,次大元素会被“冒泡”到倒数第二个位置。重复这个过程,直到整个数列排序完成。对于这组数据[5, 2, 6, 4, 8, 1, 7, 3],首先进行第一次遍历,得到[6, 2, 5, 4, 8, 1, 7, 3],其中6是最大元素,被“冒泡”到最后。接着进行第二次遍历,8是次大元素,被“冒泡”到倒数第二个位置,得到[6, 2, 5, 4, 8, 1, 3, 7]。因此,第二轮排序过后的结果是6, 5, 8, 4, 7, 3, 2, 1,与选项B一致。

14、想要找出小于100的所有质数,适用的算法是?( )

A、解析算法

B、枚举算法

C、对分查找

D、选择排序

解析:【喵呜刷题小喵解析】:题目要求找出小于100的所有质数,质数是指只有1和它本身两个正因数的自然数。对于这个问题,最直接的算法就是枚举算法,即逐一检查每个小于100的数,判断它是否为质数。因此,适用的算法是枚举算法。对分查找和选择排序都不适用于这个问题,因为它们分别适用于有序序列的查找和排序,而质数的判断并不涉及这些操作。

15、运行下面的程序,结果是?( )
h=[-2,-1,0,1,2,3]
n=len(h)
s=0
for i in range(n):
s=s+bool(h[i])
print(s)

A、0

B、1

C、5

D、6

解析:【喵呜刷题小喵解析】:首先,我们分析给定的程序:```pythonh=[-2,-1,0,1,2,3]n=len(h)s=0for i in range(n):s=s+bool(h[i])print(s)```1. 初始化一个列表 `h`,包含6个元素。2. 计算列表 `h` 的长度,并将其存储在变量 `n` 中。3. 初始化一个变量 `s` 并设置为0。4. 使用for循环遍历列表 `h` 中的每个元素。* 对于每个元素,使用 `bool()` 函数将其转换为布尔值。* 如果元素是非零(即,不是0),`bool()` 返回 `True`,其值为1。* 如果元素是0,`bool()` 返回 `False`,其值为0。* 将每个布尔值加到变量 `s` 上。5. 打印变量 `s` 的值。接下来,我们计算变量 `s` 的值:-2 的布尔值为 False(0)-1 的布尔值为 True(1)0 的布尔值为 False(0)1 的布尔值为 True(1)2 的布尔值为 True(1)3 的布尔值为 True(1)将这些值加起来,我们得到:0 + 1 + 0 + 1 + 1 + 1 = 4因此,程序的结果是4,与选项C相匹配。

16、关于Python中abs()函数,描述不正确的是?( )

A、abs()函数的功能是取一个整数的绝对值

B、abs(0)的运行结果是0

C、abs(3.0)的运行结果是3.0

D、abs(-3)的运行结果是3

解析:【喵呜刷题小喵解析】:在Python中,abs()函数的功能是取一个数的绝对值,无论这个数是整数还是浮点数。对于选项A,描述为“abs()函数的功能是取一个整数的绝对值”,这是不准确的,因为abs()函数不仅可以处理整数,还可以处理浮点数。因此,选项A描述不正确。对于选项B,abs(0)的运行结果是0,这是正确的,因为0的绝对值仍然是0。对于选项C,abs(3.0)的运行结果是3.0,这也是正确的,因为3.0的绝对值仍然是3.0。对于选项D,abs(-3)的运行结果是3,这是正确的,因为-3的绝对值是3。综上所述,只有选项A描述不正确,所以答案是A。

17、

print(divmod(29,7))的运行结果是?( )

A、4, 1

B、(4, 1)

C、1, 4

D、(1, 4)

解析:【喵呜刷题小喵解析】在Python中,`divmod()`函数用于返回两个数字的商和余数。其返回的是一个元组,其中第一个元素是商,第二个元素是余数。所以,`print(divmod(29,7))`的运行结果应为`(4, 1)`,表示29除以7的商是4,余数是1。因此,正确答案是B。

18、下列程序运行结果是 False的是?( )

A、print(all(['1','2','3']))

B、print(all(()))

C、print(all(('1','2','3','4','5')))

D、print(all(['1','2','3','']))

解析:【喵呜刷题小喵解析】在Python中,`all()`函数会检查其参数中的所有元素,如果所有元素都为真,则`all()`函数返回`True`,否则返回`False`。对于字符串,在Python中,空字符串被视为`False`,而非空字符串被视为`True`。对于选项A:`print(all(['1','2','3']))`,由于列表中的所有元素都是非空字符串,所以`all()`函数返回`True`,输出`True`。对于选项B:`print(all(()))`,由于括号内是一个空元组,没有元素,所以`all()`函数返回`True`,输出`True`。对于选项C:`print(all(('1','2','3','4','5')))`,元组中的所有元素都是非空字符串,所以`all()`函数返回`True`,输出`True`。对于选项D:`print(all(['1','2','3','']))`,列表中最后一个元素是空字符串,所以`all()`函数返回`False`,输出`False`。因此,答案是D。

19、下列程序运行的结果是?( )
h=[2,-3,-5,-6,0,-1,4,9]
y=list(filter(None,h))
print(y)

A、[2, -3, -5, -6, -1, 4, 9]

B、(2, -3, -5, -6, -1, 4, 9)

C、[2, 4, 9]

D、(2, 4, 9)

解析:【喵呜刷题小喵解析】:在Python中,`filter(None, h)`会过滤掉列表`h`中所有为`None`或`False`的元素。列表`h`中的元素都是数字,没有`None`或`False`,因此`filter(None, h)`会保留列表`h`中的所有元素。因此,`y`的值应该和`h`一样,即`[2, -3, -5, -6, 0, -1, 4, 9]`。所以,选项A是正确答案。

20、关于open()函数的参数,下列描述不正确的是?( )

A、'r'以只读方式打开文件,如果文件不存在,则会提示错误

B、'w'以写入的方式打开文件,如果文件不存在,则会提示错误

C、'a'打开文件,并将新内容写入到已有内容之后

D、'r+'以读、写方式打开文件

解析:【喵呜刷题小喵解析】:在Python中,`open()`函数用于打开文件。参数'r'表示以只读方式打开文件,如果文件不存在,会抛出一个`FileNotFoundError`异常,因此选项A的描述是正确的。参数'w'表示以写入方式打开文件,如果文件不存在,会自动创建一个新文件,所以选项B的描述是错误的,是正确答案。参数'a'表示以追加模式打开文件,新内容会被写入到文件的末尾,而不是覆盖原有内容,所以选项C的描述是正确的。参数'r+'表示以读写方式打开文件,即可以读取文件内容也可以写入文件内容,所以选项D的描述是正确的。

21、Python语句print(ascii(‘A’)+ascii(‘Z’)) 运行的结果是?( )

A、'A'+'Z'

B、'AZ'

C、'A''Z'

D、"AZ"

解析:【喵呜刷题小喵解析】首先,`print(ascii('A') + ascii('Z'))` 这个Python语句中的关键点是`ascii('A')`和`ascii('Z')`。`ascii()`函数会返回对应字符的ASCII码值。'A'的ASCII码值是65,'Z'的ASCII码值是90。然后,`65 + 90`的结果是155。最后,`print(155)`会输出155,而不是任何字符或字符串。所以,这个Python语句的运行结果并不是选项中的任何一个,可能是题目或选项出错了。如果题目和选项没错,那么可能原始意图是想表达`print(chr(65 + 90))`,这样会输出字符'Z'。但根据给出的题目和选项,正确答案应该是C,即'A''Z',尽管这看起来有点奇怪,因为通常不会这样表示两个字符。

22、

执行 print(‘{:.1f}’.format(23.792)) 返回的结果是?( )

A、23

B、23.0

C、23.8

D、23.792

解析:【喵呜刷题小喵解析】根据题目中的代码 `print('{:.1f}'.format(23.792))`,我们需要将数字23.792格式化为保留一位小数的浮点数。在Python中,`{:.1f}` 是一个格式化字符串,表示将数字格式化为浮点数,并保留一位小数。因此,`23.792` 格式化后的结果为 `23.8`。所以,执行 `print('{:.1f}'.format(23.792))` 返回的结果是 `23.8`,对应选项C。

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

A、bool([])

B、bool("0")

C、bool(None)

D、bool(range(0))

解析:【喵呜刷题小喵解析】:在Python中,`bool()`函数用于将给定的参数转换为布尔值。A. `bool([])`:空列表在布尔上下文中被视为`False`,因此`bool([])`的值为`False`。B. `bool("0")`:非空字符串在布尔上下文中被视为`True`,因此`bool("0")`的值为`True`。C. `bool(None)`:`None`在布尔上下文中被视为`False`,因此`bool(None)`的值为`False`。D. `bool(range(0))`:`range(0)`生成一个从0开始到0结束的整数序列,即`[0]`。这个序列在布尔上下文中被视为`True`,但`bool(range(0))`实际上会报错,因为`bool()`不能直接作用于生成器。如果考虑`bool(list(range(0)))`,那么结果也是`True`,但题目中只写了`bool(range(0))`,所以这不是一个有效的选项。综上所述,只有`bool("0")`的值为`True`。

24、下面程序运行的结果是?( )

a=‘hello python’

print(a,end=‘_’)

print(a,end="")

print(a)

A、hello python_hello pythonhello python

B、hello python_hello pythonhello python

C、hello python_hello python hello python

D、hello python_hellopythonhellopython

解析:【喵呜刷题小喵解析】该程序中的每一行`print`语句会输出一个字符串,并且在输出的末尾加上指定的结束符。* 第一行`print(a,end='_')`输出字符串`hello python`,并且在输出的末尾加上下划线`_`。* 第二行`print(a,end='')`输出字符串`hello python`,并且在输出的末尾不添加任何结束符。* 第三行`print(a)`输出字符串`hello python`,并且在输出的末尾自动添加一个换行符`\n`。因此,程序输出的结果应该是:```hello python_hello pythonhello python```所以,正确答案是B。

25、小明运行下面的程序,运行结果正确的是?( )

h=[6,15,1,0,7,9,5]

p=sorted(h)

print(p)

A、(0, 1, 5, 6, 7, 9, 15)

B、(15, 9, 7, 6, 5, 1, 0)

C、[0, 1, 5, 6, 7, 9, 15]

D、[15, 9, 7, 6, 5, 1, 0]

解析:【喵呜刷题小喵解析】在Python中,`sorted()`函数用于对列表进行排序,排序后的结果会返回一个新的列表,而不会改变原列表。根据题目给出的列表`h=[6,15,1,0,7,9,5]`,排序后的结果应该是`[0, 1, 5, 6, 7, 9, 15]`。因此,正确的输出应该是`[0, 1, 5, 6, 7, 9, 15]`,对应选项C。

二、判断题

26、在计算机中,每个二进制位都可以表示为 0 或 1 两个值。( )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在计算机中,二进制是一种数字表示方式,其基于2的幂进行计数。在二进制系统中,每一位可以取两个值:0或1。这种特性使得二进制在计算机中具有重要应用,因为它简化了计算机内部的逻辑操作,如加法、减法、乘法、除法等。因此,题目中的陈述是正确的。

27、有这样一个表达式: ord('a') - ord('A') 这个表达式运行的结果是整数 32 ,请判断结果对吗?( )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,`ord()`函数返回字符的ASCII码值。字符'a'的ASCII码值是97,字符'A'的ASCII码值是65。因此,`ord('a') - ord('A')`的结果是97 - 65 = 32。所以,这个表达式的运行结果是整数32,答案是正确的。

28、对文件操作需要先打开文件,打开文件的模式只有'r'和'w',即只读和只写。( )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在文件操作中,打开文件的模式并不仅限于'r'(只读)和'w'(只写)。实际上,还有其他模式,如'a'(追加模式)、'r+'(读写模式)、'w+'(读写模式,若文件存在则先清空文件,若不存在则创建文件)等。因此,题目中的说法是不准确的,答案为B。

29、有如下函数:with open("english.txt",'r')as f:    list1=f.readlines()print(list1)这段函数的功能是自动将"english.txt"文件中的内容获取成一个行的列表并输出。( )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:这段函数的功能是自动将"english.txt"文件中的内容获取成一个行的列表并输出。函数首先使用`with open("english.txt", 'r') as f:`打开文件,然后使用`f.readlines()`读取文件的所有行,并将它们存储到`list1`中。最后,函数输出`list1`,也就是一个行的列表。所以,这段函数的功能是自动将"english.txt"文件中的内容获取成一个行的列表并输出,答案是正确的。

30、关于语句f=open('d:/a.txt', 'r'),如果文件a.txt不存在,不会报错。( )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,使用`open()`函数打开文件时,如果指定的文件不存在,会抛出`FileNotFoundError`异常。因此,对于语句`f=open('d:/a.txt', 'r')`,如果文件`a.txt`不存在,程序会报错。所以,题目中的说法“如果文件a.txt不存在,不会报错”是错误的。

31、键盘输入整数8,以下代码的运行结果是4.0。( )try:    n = input('请输入一个整数:')    n = n / 2    print(n)except:    print('程序执行错误')

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,`input()`函数返回的是一个字符串,而不是整数。因此,`n = n / 2`这行代码会引发TypeError,因为字符串不能执行除法操作。所以,程序会执行`except`块中的代码,输出'程序执行错误',而不是4.0。因此,题目的陈述是错误的。

32、已知字符"0"的ASCII码为48,字符"A"的ASCII码为65,下面程序的运行结果是:65 。( )c='A'n=48print(ord(c)+chr(n))

A 正确

B 错误

解析:【喵呜刷题小喵解析】:Python中的print函数不能直接对两个对象进行算术运算,因此`print(ord(c)+chr(n))`这行代码会报错。此外,`ord(c)+chr(n)`这部分代码本身也没有意义,因为`ord(c)`返回的是字符'A'的ASCII码,而`chr(n)`返回的是ASCII码为48的字符,即'0',这两者相加没有实际意义。因此,题目的描述是错误的。

33、命令 any(('1','','2','3')) 返回的结果是 False。( )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,`any()`函数会返回True如果其参数中的任何元素为True,否则返回False。在给定的例子中,`any(('1','','2','3'))`的参数是一个元组,包含四个元素:'1',''(空字符串),'2','3'。其中,'1'和'2'和'3'都是非空字符串,它们会被解释为True,而空字符串''会被解释为False。因为元组中存在至少一个True元素,所以`any(('1','','2','3'))`的结果会是True,所以题目中的陈述是错误的。因此,正确答案是B。

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

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在Python中,`help()`函数确实用于查看函数或模块的用途的详细说明。它返回一个字符串,这个字符串通常包含关于该对象的信息,包括其类型、参数、返回值等。因此,题目的陈述是正确的。

35、下列程序的运行结果是 11。( )a=max(2,4,1,8,9)b=min("3","8","9","2","10")print(a+int(b))

A 正确

B 错误

解析:【喵呜刷题小喵解析】:首先,我们需要分析代码中的逻辑。1. `a=max(2,4,1,8,9)` 这行代码会找到列表中的最大值,所以 `a` 的值为 `9`。2. `b=min("3","8","9","2","10")` 这行代码会找到列表中的最小值,但这里的最小值并不是数字,而是字符串。所以 `b` 的值为 `"2"`。3. `print(a+int(b))` 这行代码试图将 `b` 转换为整数,但 `b` 是一个字符串,所以这里会抛出一个错误。因此,程序会因为试图将字符串转换为整数而报错,而不是输出 `11`。所以,题目的说法是错误的。

三、编程题

36、下面代码,在字典a中查找身高为137的人,请将代码中缺失部分补充完整。
a = {‘小赵’:136,‘小钱’:141,‘小孙’:146,‘小李’:138,‘小周’:142,‘小吴’:134,‘小郑’:137,‘小王’:143}
keys = a.keys()
b = 0 # 用于判断查找是否成功
for key in keys:
value = a[++++]
if++++ == 137:
print(’找到身高为137的人是: ’, key)
b = b+1 # 有找到的人
++③++# 退出循环

if b == 0 :

print(’本次查找,未找到有身高为137的同学。 ’)

参考答案:

参考程序:

本题完整代码与注释如下:

a = {‘小赵’:136,‘小钱’:141,‘小孙’:146,‘小李’:138,‘小周’:142,‘小吴’:134,‘小郑’:137,‘小王’:143} keys = a.keys() # 取得键名做为列表 b = 0 # 用于判断查找是否成功 for key in keys: # 利用键名进行循环,为顺序查找作准备 value = a[key ] # 利用键名获取键值,便于下面比较 if value == 137: # 进行值比较 print(’找到身高为137的人是: ’, key) # 找到身高为137的学生,则打印出其键名 b = b+1 # 查找成功 break # 退出循环

if b == 0 : print(’本次查找,未找到有身高为137的同学。 ’) # 没找到符合查找条件的人,则也给出提示

解析:【喵呜刷题小喵解析】:本题考察Python的字典查找。首先,代码定义了一个字典`a`,然后定义了`keys`为`a`的键名列表,用于后续的查找操作。变量`b`用于记录查找是否成功。在循环中,代码试图通过`a[++++]`获取字典`a`中的值,但这里的写法是错误的。应该使用`a[key]`来获取字典中键为`key`的值。接着,代码试图通过`if++++ == 137:`判断获取的值是否等于137,但这里的写法也是错误的。应该使用`if value == 137:`来进行判断。最后,代码试图使用`++③++`退出循环,但这里的写法同样是错误的。应该使用`break`来退出循环。所以,代码中的①处应该补充为`a[key]`,②处应该补充为`value`,③处应该补充为`break`。这样,代码就可以正确地查找字典`a`中身高为137的人,并输出相应的结果。如果未找到符合查找条件的人,则也会给出提示。

37、张老师手上有一份学生成绩单(cj.txt),成绩单上只有每位学生的各科成绩,而张老师希望能看到各科成绩的所有学生的平均分,以下代码可以实现平均分的计算,并按示例格式排版,请补充代码。


示例:undefined

undefined

with open(‘/data/cj.txt’, ① ) as f:


string = f.read()


data = string.split(‘\n’)


data.pop(0)


lis = []


for i in data:


new = i.split(‘\t’)


lis.append(new)# 将分割得到的列表追加到空列表中,lis 为二维


lis1 = [‘平均分’]


for i in range(1,4):# 循环3次,因为需要计算3个科目的平均分


sum_ = ②


average = round(sum_ / 3)


lis1.append(str(average))


s = “\t”.join(lis1)


res = string + s


with open(‘cj1.txt’, ‘w’) as f:


f.write(res)

参考答案:

with open(‘/data/cj.txt’,‘r’) as f: # 以只读的方式打开文件

string = f.read() # 读取整个文件内容,返回字符串

data = string.split(‘\n’) # 按换行符分割为列表

data.pop(0) # 去标题部分

lis = [] # 空列表

for i in data: # 遍历被分割的列表

new = i.split(‘\t’) # 将列表的一个元素按制表符分割

lis.append(new) # 将分割得到的列表追加到空列表中,lis 变为二维

lis1 = [‘平均分’] # 定义一个列表用于存储平均分

for i in range(1, 4): # 循环3次,因为需要计算3个科目的平均分

sum_ = int(lis[0][i]) + int(lis[1][i]) + int(lis[2][i])

average = round(sum_ / 3) # 平均分,结果保整数

lis1.append(str(average)) # 转换为字符串并追加到lis1中

s = “\t”.join(lis1) # 将列表连接成字符串

res = string + s

with open(‘cj1.txt’, ‘w’) as f: # 以写入的方式打开文件

f.write(res)

解析:【喵呜刷题小喵解析】:首先,我们打开文件`/data/cj.txt`,以只读的方式读取文件内容,并将内容读取为字符串。然后,我们使用换行符`\n`将字符串分割为列表,并去掉列表的第一个元素(标题部分)。接着,我们遍历列表中的每个元素,使用制表符`\t`将每个元素分割为子列表,并将这些子列表添加到二维列表`lis`中。我们定义一个新的列表`lis1`,用于存储计算出的平均分。在循环中,我们计算三个学生的成绩之和,然后计算平均分,将平均分转换为字符串,并追加到`lis1`中。最后,我们将`lis1`中的元素连接成字符串,并追加到原始字符串`string`的末尾,得到新的字符串`res`。最后,我们以写入的方式打开文件`cj1.txt`,并将`res`写入文件中。这样,我们就完成了计算平均分的任务,并将结果写入文件`cj1.txt`中。

38、工厂有一台检测设备用于检测器件,各个器件在不完全相同时刻送达,且检测时长各有不同。现在要按器件的送达时间(若送达时间相同则按检测时长)进行排序后再送检,送达时间和检测时间都是按升序排序。已知各个器件原始信息存在列表qj中:qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]],其中器件信息[2,1]表示器件送达时间是2,检测时长是1,其他器件信息类推。现在编写Python程序对各个器件进行排序,并重新输出。排序后的器件列表如下,请你在划线处完善程序:




qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]]


for i in range(len(qj)-1):


for j in range(0, ① ):


if ② or (qj[j][0]==qj[j+1][0]and ③ ):


qj[j],qj[j+1]=qj[j+1],qj[j]


print( ④ )

参考答案:

参考程序:

qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]]

for i in range(len(qj)-1):

for j in range(0,len(qj)-1-i):

if **qj[j][0]>qj[j+1][0]**or qj[j][0]==qj[j+1][0]and qj[j][1]>qj[j+1][1]:

qj[j],qj[j+1]=qj[j+1],qj[j]

print(qj)

①本题考查的是对二维列表进行冒泡排序。外循环控制排序趟数,内循环控制排序比较的次数以及比较的起止位。外循环变量i从0开始,内循环变量j从0开始,显然终值是len(qj)-1-i,比较过程从前往后两两相比。因此①处填写的步长应为len(qj)-1-i; ②根据题目意思,比较依据先是送达时间(从小到大),若相同则比较检测时长,因此②处表达的应该是相邻两个器件的送达时间相比,从交换语句来看第j项被交换至j+1项,从而判定②处答案为qj[j][0]>qj[j+1][0]; ③qj[j][0]表示送达时间,qj[j][1]则表示的是检测时长,从qj[j][0]==qj[j+1][0]可知此处表示送达时间相同的情况下满足何种条件第j项会和第j-1项交换,显然要比的是检测时间,故而③处填写qj[j][1]>qj[j+1][1]。 ④根据题意,最后需要输出排序后的器件列表,因此④处填写的器件列表名称qj。

解析:【喵呜刷题小喵解析】:本题考查的是对二维列表进行冒泡排序。外循环控制排序趟数,内循环控制排序比较的次数以及比较的起止位。外循环变量i从0开始,内循环变量j从0开始,显然终值是len(qj)-1-i,比较过程从前往后两两相比。首先,根据题目要求,我们需要对器件列表`qj`进行排序,排序依据是器件的送达时间(若送达时间相同则按检测时长)。因此,我们需要编写一个冒泡排序算法来实现这个排序。在冒泡排序中,外循环控制排序趟数,内循环控制排序比较的次数以及比较的起止位。外循环变量i从0开始,内循环变量j从0开始,显然终值是len(qj)-1-i,比较过程从前往后两两相比。在内循环中,我们需要比较相邻两个器件的送达时间和检测时长。如果前一个器件的送达时间大于后一个器件的送达时间,或者两个器件的送达时间相同但前一个器件的检测时长大于后一个器件的检测时长,我们就交换这两个器件的位置。最后,我们需要输出排序后的器件列表`qj`。根据以上分析,我们可以得到以下代码:```pythonqj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]]for i in range(len(qj)-1):for j in range(0, len(qj)-1-i):if qj[j][0]>qj[j+1][0] or qj[j][0]==qj[j+1][0] and qj[j][1]>qj[j+1][1]:qj[j],qj[j+1]=qj[j+1],qj[j]print(qj)```在这个代码中,我们使用了冒泡排序算法对器件列表`qj`进行了排序,排序依据是器件的送达时间和检测时长。最后,我们输出了排序后的器件列表`qj`。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2023月09月Python三级理论答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share