一、单选题
1、以下哪个方法用于向字典中添加或修改键值对?( )
A. dict.append()
B. dict.update()
C. dict.remove()
D. dict.insert()
正确答案:B
答案解析:在字典中,用于向字典中添加或修改键值对的方法是update()。这个方法可以接受一个字典作为参数,将其键值对添加到原字典中,如果键已存在,则会更新对应的值。
2、下列哪个操作不是字典类型的标准方法或属性?( )
A. dict.keys()
B. dict.getall()
C. dict.items()
D. dict.values()
正确答案:B
答案解析:在 Python 的字典类型中,getall() 并不是标准的方法或属性。正确的方法包括 keys()、items() 和 values(),它们分别用于获取字典的键、键值对和值。
3、集合类型中用于向集合中添加多个元素的方法是?( )
A. extend()
B. Add()
C. update()
D. add()
正确答案:C
答案解析:在集合类型中,update() 方法可用于向集合中添加多个元素。
4、若有一个集合 s = {1, 2, 3, 4},要删除集合中的元素2,以下哪个操作是正确的?( )
A. s.remove(2)
B. s.delete(2)
C. s.pop()
D. s.pop(2)
正确答案:A
答案解析:选项B s.delete(2)不是集合的有效方法。选项C、D s.pop()会从集合中随机删除一个元素并返回它,但它不接受参数来指定要删除的元素。故选项A正确。
5、下面Python程序运行结果是?( )
s=(1,2,3,4,[5,6])
s[4][1]=7
print(len(s))
A. 2
B. 5
C. 6
D. 4
正确答案:B
答案解析:元组中的列表元素可以修改,但元组中元素个数未变,故选B。
6、执行下面Python程序段输出结果?( )
>>>import math
>>>math.gcd(16,24)
A. 8
B. 16
C. 24
D. 32
正确答案:A
答案解析:math.gcd(16,24)返回两个整数的最大公约数为8,故选A
7、执行下列程序语句,输出结果说法正确的?( )
>>>import random
>>>random.randint(1,100)
A. 输出结果为1到100的随机整数,包括1但不包括100
B. 输出结果为1到100的随机整数,包括1和100
C. 输出结果为1到100的随机整数,不包括1和100
D. 输出结果为1到100的随机整数,不包括1但包括100
正确答案:B
答案解析:random.randint( ),返回值是一个闭合区间,就该题论是从1到100的随机整数,1和100都包含。故选B
8、Python中,下列哪个选项是random库中用于生成随机浮点数的函数?( )
A. randint()
B. randrange()
C. random()
D. getrandbits()
正确答案:C
答案解析:random()返回左闭右开区间内的一个随机浮点数。故选C
9、执行下列Python程序段输出结果为?( )
>>>import math
>>>math.pow(2,4)
A. 8.0
B. 8
C. 16
D. 16.0
正确答案:D
答案解析:math.pow(x,y)返回x的y次方,结果保留一位小数点。故选D
10、有如下程序,请问程序执行结果是?( )
tup1=([1,2],12,'ab')
tup1[0][1]=23
print(tup1[0][1])
A. 1
B. 2
C. 23
D. 程序出现错误
正确答案:C
答案解析:元组中的元素不可修改,但如果元组的元素为列表时可通过操作列表修改,故选C。
11、为使程序段1和程序段2实现相同的功能,可在划线处填写的代码是?( )
#程序段1
s=0
t=1
while t<=6:
s=s+t
_______________
print(s)
#程序段2
s=0
for t in range(1,7,2):
s=s+t
print(s)
A. t=2
B. t=6
C. t=t+1
D. t=t+2
正确答案:D
答案解析:本题是循环结构程序for语句和while语句之间的转换实现。由题中for语句程序段可知循环变量t的步长为2,在循环体(语句块)其他语句保持不变的情况下,为了确保两程序段能实现计算“1+3+5的和”的相同功能,则程序段1划线处应填写“t=t+ 2”。
考生答案:D
12、若变量 x 的值为“IT”,变量 y 的值为“技术”,则运行代码 print(x*2+y),输出的结果是?( )
A. IITT技术
B. IT2技术
C. IT*2+技术
D. ITIT技术
正确答案:D
答案解析:主要考查Python字符串。变量 x 的值为“IT”,变量 y 的值为“技术”,字符串中的“*”表示重复,“+”表示字符串拼接。因此x*2+y=“ITIT技术”。
13、字符串a="Happy New Year",则表达式a.find("a")的值是?( )
A. 1
B. 2
C. 1,4
D. 2,5
正确答案:A
答案解析:x.find(y)函数,返回的是子串y在X中首次出现的首字母的索引号。
14、有变量a="张三",b="李四",c=10,下列语句不能正确输出“张三和李四是好朋友,他们认识10年了!”的是?( )
A. print("%d和%d是好朋友,他们认识%d年了!"%(a,b,c))
B. print(a +"和" + b +"是好朋友,他们认识"+str(c) +"年了!")
C. print("{}和{}是好朋友,他们认识{}年了!".format(a,b,c))
D. print("%s和%s是好朋友,他们认识%d年了!"%(a,b,c))
正确答案:A
答案解析:%号占位符是最早引入的方法,%s传递字符串,%d传递整型数值。其基本语法是将格式化字符串中的变化部分用`%s`占位,然后将变量的值传递给’%s’,从而实现格式化输出。但格式的内容与传入的值需要一一对应。
15、如下Pthon程序段,可实现输入二进制数,转化成十进制结果。则划线处①代码可填?( )
b=input("请输入二进制数:")
b=_____①_____
d=0
for i in range(len(b)):
d+=int(b[i])*2**i
print("十进制结果是:",d)
A. b[:﹣1]
B. b[﹣1::1]
C. b[::﹣1]
D. b[len(b)﹣1:0:﹣1]
正确答案:C
答案解析:本题考察进制转换及字符串的切片操作。从循环体中2的指数可以推出,应是从低位开始依次按权相加,因此,只需要把字符串反向即可。
16、表达式len(range(1,10))的值是?( )
A. 9
B. 10
C. 1
D. 2
正确答案:A
答案解析:range用于产生有序的整数序列,步长省略默认是1,因此产生的是1到9步长为1的整数序列,长度为9。
17、某Python程序段如下,若想知道0~1000之间(包括0和1000)所有5的倍数的数字之和,划线处应填入的语句是?( )
s=0
for i in range(________):
s=s+i
print(s)
A. 5,1001,5
B. 5,1001,1
C. 5,1000,5
D. 5,1000,1
正确答案:A
答案解析:为了提高程序效率,应该尽可能的减少循环次数,且不能漏掉任何一个可能的解,因此选择A。
18、有下列Python程序段,程序运行后,输出的结果是?( )
s="United by Emotion"
s1=""
for i in range(0,len(s),4):
c=s[i]
if ord(c)>=ord("a"):
c=chr(ord(c)-ord("a")+ord("A"))
s1=c+s1
print(s1)
A. UEYON
B. NOYE
C. EYON
D. UEEI
正确答案:B
答案解析:本题考查字符串函数。 表达式chr(ord(c)-ord("a")+ord("A"))的功能是把小写字母转换成大写字母。s1=c+s1表示把转换后的内容逆序拼接。循环的步长为4,取出的c的值依次U、e、y、0、n"。故选B。
19、运行下列程序,输出结果是?( )
alist=list(range(1,10))
print(alist[1::3])
A. [0, 3, 6]
B. [1, 4, 7]
C. [2, 5, 8]
D. [3, 6, 9]
正确答案:C
答案解析:alist列表的全部元素为[1, 2, 3, 4, 5, 6, 7, 8, 9],alist[1::3]是从第2个元素开始,步长为3进行切片,到最后一个元素结束。
20、运行下列程序,输出结果是?( )
alist=[3,6,9]
for i in alist[::-1]:
print(i,end=',')
A. 3,6,9,
B. 3,6,9
C. 9,6,3
D. 9,6,3,
正确答案:D
答案解析:当步长为负值时,从列表的尾部开始向头部进行切片。当省略起始索引和终止索引时,表示从尾部开始,一直切到最开始的元素。
21、运行下列代码,输出结果是?( )
alist=[1,2,3,4,5]
blist=','.join(str(n) for n in alist)
print(blist)
A. 1,2,3,4,5
B. 1 2 3 4 5
C. [1,2,3,4,5]
D. "1,2,3,4,5"
正确答案:A
答案解析:该题综合了列表和字符串的知识,包括列表的遍历、字符串格式转换以及字符串join方法的应用。
22、运行下列代码,输出结果是?( )
alist=['语文','数学','编程']
blist=['96','98','100','95']
c=list(zip(alist,blist))
print(c)
A. [['语文', '96'], ['数学', '98'], ['编程', '100']]
B. [('语文', '96'), ('数学', '98'), ('编程', '100')]
C. [('语文', 96), ('数学', 98), ('编程', 100)]
D. (('语文', '96'), ('数学', '98'), ('编程', '100'))
正确答案:B
答案解析:zip函数的两个列表参数长度不一样时,以短的为准。另外,注意blist中的元素的数据类型是字符串,并非整型。
23、小森在收集考试报名数据时,经常遇到姓名前后有空格的情况。他想利用Python语言写一段程序帮助自己获得准确的数据。
他想利用集合推导式来创建一个集合,保存处理好的姓名数据。请选择最合适的一个选项中的语句?( )
A. print({i.lstrip() for i in (' 刘备','关羽 ',' 张飞 ')})
B. print({i.lstrip() for i in (' 刘备','关羽 ',' 张飞 ')})
C. print({i.strip() for i in (' 刘备','关羽 ',' 张飞 ')})
D. print({i.split() for i in (' 刘备','关羽 ',' 张飞 ')})
正确答案:C
答案解析:集合推导式与字符串的综合题。字符串对象strip()方法可以去除左右两边的空格,lstrip()方法可以去除左边的空格,rstrip()方法可以去除右边的空格。
24、下列选项中,与列表推导式my_list=[n**2 for n in range(6)]功能不相同的是?( )
A. list1=[n**n for n in range(6)]
B. list2=[]
for n in range(6):
list2.append(n*n)
C. list3=list(map(lambda n:n**2,range(6)))
D. list4=list(map(lambda n:pow(n,2),range(6)))
正确答案:A
答案解析:my_list列表推导式中的元素是n的2次方,list1中的元素是n的n次方。其他选项列表中的元素都是n的2次方。
25、下面是一段关于生成器推导式的代码,运行该代码段后的输出结果是?( )
ge=(kemu for kemu in ('语文','数学','英语','编程'))
print(list(ge))
print(tuple(ge))
print(set(ge))
A. ['语文', '数学', '英语', '编程']
('语文', '数学', '英语', '编程')
{'语文', '数学', '英语', '编程'}
B. ['语文', '数学', '英语', '编程']
('语文', '数学', '英语', '编程')
set()
C. ['语文', '数学', '英语', '编程']
()
set()
D. ['语文', '数学', '英语', '编程']
()
{}
正确答案:C
答案解析:生成器对象只能被访问一次,没有任何方法可以再次访问已访问过的元素。所以,当第二行代码把ge对象转化成列表以后,后面的元组和集合就没有办法再去访问ge对象了,故输出为空元组和空集合。
二、判断题
26、字典中的键必须是唯一的。( )
对
错
正确答案:对
答案解析:字典中的键必须是唯一的。字典是基于哈希表实现的,每个键都对应一个唯一的哈希值,因此不能有重复的键。如果尝试使用重复的键插入字典,则会覆盖之前的键值对。因此,该判断题是正确的。
27、集合类型中的元素不允许重复。( )
对
错
正确答案:对
答案解析:集合类型中的元素不允许重复。
28、要判断一个元素是否在集合中,可以使用 in 关键字,如:x in s。( )
对
错
正确答案:对
答案解析:在Python中,可以使用 in 关键字来检查一个元素是否存在于集合中。如果元素 x 在集合 s 中,表达式 x in s 将返回 True,否则返回 False。
29、元组t=([1,2],'a','b')执行语句t[0][2]=3,元组t=([1,2,3],'a','b')。( )
对
错
正确答案:错
答案解析:元组中的列表元素可以追加用t[0].append(3),直接用下标追加报错。
30、函数 time.time() 用于获取当前时间戳,时间间隔是以小时为单位的浮点小数。( )
对
错
正确答案:错
答案解析:函数 time.time() 用于获取当前时间戳,时间间隔是以秒为单位的浮点小数。
31、表达式"Python2024">"python"返回值为True。( )
对
错
正确答案:错
答案解析:字符串大小的比较,不是以字符串的长度直接决定,而是从最左边第一个字符开始比较,大者为大,小者为小。若相等,则继续按字符串顺序逐一比较后面的字符。
32、某Python程序段如下,执行之后,输出内容为hello,java,java,python。( )
s1="hello,python,python,python"
print(s1.replace("python", "java", 2))
对
错
正确答案:对
答案解析:x.replace( old,new[,max]),返回字符串中的old(旧字符串)替换成new(新字符串)后生成的新字符串,如果指定第三个参数max,那么替换则不超过max次。
33、运行下列代码,输出结果为0。( )
a=[6,6,6]
b=a.remove(6)
c=a.count(6)
print(c)
对
错
正确答案:错
答案解析:列表的remove方法删除列表中第一个值与指定值相等的元素,如果列表中不存在该元素则抛出异常。所以题目中运行一次remove方法后,列表b为[6,6],c的值为2,输出结果为2。
34、序列解包可以用在列表、元组等序列数据类型对象中,字典这种映射数据类型不可以用。( )
对
错
正确答案:错
答案解析:可以对字典使用序列解包。但是需要注意,对字典使用序列解包时,默认是对字典“键”进行操作,如果需要对“键值对”进行操作,需要使用字典的item()方法明确指定;如果需要对“值”进行操作,需要使用字典的values()方法明确指定。
35、可以直接使用list(range(5))将其转换为列表[0, 1, 2, 3, 4]。( )
对
错
正确答案:对
答案解析:range()函数的返回值可以通过list()直接转换为列表。
三、编程题
36、记录任务
题目描述:小明想编写一个程序来记录他每天的学习任务完成情况。他希望在输入每天完成的任务个数后,能够查看一周内完成任务的总情况。为了实现这个目标,请在下面程序空白处填上正确内容以实现程序功能。
要求:
(1)小明依次输入一周内每天完成的任务数,程序将这些任务记录下来;
(2)程序会逐个输出一周内的任务完成情况,以及统计并输出一周内完成的任务总数。
tasks = []
for i in range(1, 8):
task = ① ("请输入第{}天完成的任务:".format(i))
②
print("一周内的任务完成情况如下:")
for i in range(7):
print("第{}天完成的任务:{}".format( ③ , tasks[i]))
total_tasks = sum(int(task) for task in tasks)
print("一周内完成的任务总数为:", ④ )
37、注册用户
一个网站在注册新用户时,对用户名和密码的要求如下:
(1)用户名必须是以数字1开头的11位纯数字;例如:12345678912
(2)密码长度6——20,必须包含英文字母、数字。例如:python123
(3)输入一个QQ邮箱,以备找回密码。例如147258369@qq.com,qq号为纯数字,以qq.com结尾。
小华编写一个程序,首先验证一下准备使用的账号密码是否符合该网站的要求。
请补全下列程序,实现此功能。
name=input('请输入准备使用的账号:')
password=input('请输入准备使用的密码:')
mail=input('请输入准备使用的邮箱:')
name_check=False
password_check=False
mail_check=False
if name.isdigit() and len(name)==11 and ① :
name_check=True
if password.isalnum() and ( ② ):
password_check=True
if mail.endswith("@qq.com"):
mail_name= ③
if mail_name.isdigit():
mail_check=True
if name_check and password_check and mail_check:
print('账号、密码、邮箱均符合要求,可以注册!')
elif name_check==False:
print('账号不符合要求,请重新填写!')
elif ④ :
print('密码不符合要求,请重新填写!')
elif mail_check==False:
print('邮箱不符合要求,请重新填写!')
else:
print('未知情况,请重新填写!')
———————分割线,以下为程序输入输出结果—————————
请输入准备使用的账号:12345678912
请输入准备使用的密码:python123
请输入准备使用的邮箱:147258369@qq.com
账号、密码、邮箱均符合要求,可以注册!
38、参赛作品
小林为选出班级中平均分最高的参赛作品,编写Python程序,算法设计如下:
(1)5位评委对3个作品的评分数据存储在列表data中(数据由3位十进制数组成,第1位对应作品号,后2位对应作品得分,如“275”表示2号作品得分75)
(2)统计并输出3个作品的平均分(保留一位小数),选择平均分最高的作品为参赛作品,若最高平均分存在并列,则输出全部并列的最高平均分作品号。程序运行界面如下图所示。
程序如下。请在划线处填入合适的代码:
data=[180,283,385,170,276,384,180,285,380,190,295,390,170,272,372]
s={1:0,2:0,3:0}
ans=[]
max_zp=0
for c in data:
zp= ①
fs=c%100
②
for i in range(1,4):
③
print('作品',i,'平均分为',s[i])
if s[i]>max_zp:
max_zp=s[i]
for i in range(1,4):
if ④ :
ans.append(i)
print('平均分最高作品号是:',ans)