满分100分|共38题|单选题+判断题+编程题|附答案及解析
1、在计算机课上,小明想用Python存储自己的三次数学测验成绩(90, 85, 95)。下列选项中,能正确创建一个包含三个成绩的列表的是?( )
list = (90, 85, 95)list = [90; 85; 95]list = {90, 85, 95}list = [90, 85, 95]正确答案:D
答案解析:Python中列表使用方括号 [ ] 定义,元素之间用逗号分隔,如 [90, 85, 95],符合题目要求,故选项D正确。
2、小明在编写程序统计班级"诚信之星"评选的多次得分,要求选出最高分。初始数据为 scores = [85, 90, 88, 90, 82, 85]。他尝试用以下代码实现,请选择程序运行的正确输出?( )
scores = [85, 90, 88, 90, 82, 85]a = scores.sort(reverse=True)print(a)[90, 90, 88, 85, 85, 82]90NoneAttributeError正确答案:C
答案解析:scores.sort(reverse=True) 是列表的原地排序方法,会直接修改原列表,但返回值为 None。变量 a 被赋值为 sort() 的返回值(即 None),因此 print(a) 输出 None。
3、小红需要将新收集的“节约用水”宣传次数添加到班级记录中。原数据为 records = [3, 5, 2],她想追加一次新记录 4,于是编写了以下代码:
records = [3, 5, 2]records.append(4) print(records) 请选择程序运行的正确输出?( )
[3, 5, 2, 4][3, 5, 2, ]AttributeError[3, 4, 5, 2]正确答案:A
答案解析:append() 方法直接在列表末尾添加单个元素(此处是整数 4),结果列表为 [3, 5, 2, 4]。
4、小明的妈妈让他用Python记录购物清单的价格,并计算总花费。已知购物列表为:prices = [5, 8, 3, 10, 2],依次为牛奶、面包、苹果、鸡蛋、糖果的价格,计算总花费正确的选项是?( )
total = prices[0] + prices[-1]total = sum(prices)total = prices[1] + prices[2] + prices[3]total = len(prices)正确答案:B
答案解析:选项A和C因索引使用不完整导致漏算。选项D混淆了len()(长度)和sum()的功能。sum()函数计算列表中所有元素总和。
5、小明的购物车字典为cart = {"苹果": 3, "香蕉": 0, "橘子": 5},他想删除库存为0的“香蕉”这一项。以下哪个操作正确?( )
cart.pop()del cart["香蕉"]cart.remove("香蕉")cart.clear()正确答案:B
答案解析:A错误,因pop()需指定键(如cart.pop("香蕉"));C错误,因字典无remove()方法;D会清空整个字典,不符合需求。
6、小红用字典记录学生选课情况:courses = {"李明": "Python", "王芳": "Java"}。她想查询“李华”是否已选课,若未选则返回False。以下哪种方式最合适?( )
courses["李华"]courses.get("李华", False)courses.has("李华")courses.find("李华")正确答案:B
答案解析:选项B通过get(key, default)安全获取值,避免KeyError。A会直接报错;C语法错误(字典无has()方法);D错误,因字典无find()方法。
7、在Python中,执行以下程序,输出的结果是?( )
t=('12',3,[4,5,6])t[1]='9'print(t)('9',3,[4,5,6])('12','9',[4,5,6])('12',3,['9',5,6])正确答案:A
答案解析:在Python中,元素在元组中具有索引,默认从0开始。元组属于不可变序列,不支持原位改变,否则会报错。但元组中可包含可变序列元素,如执行t[2][0]="9",输出结果为('12',3,['9',5,6])。
8、在Python中,下列元组的声明不正确的是?( )
t=(4,5,6)t=4,t=4,5,6t=(4)正确答案:D
答案解析:元组声明时,可以有小括号组织元素,也可以没有小括号组织元素。如果只有一个元素,其后面必须跟随逗号。
9、在Python中,求两个集合x和y的并集时,用以下哪个表达式?( )
x<yx-yx|yx&y正确答案:C
答案解析:< 用于判断集合之间的包含关系,- 用于实现集合的差集运算,& 用于实现集合的交集运算。
10、某Python程序如下:
x={1,2}y={3,4,5,6}x.add(7)s=min(x)+max(y)-len(x)print(s)程序运行后的结果是?( )
2345正确答案:C
答案解析:集合对象的add()方法可以增加未存在的新元素,集合x变为{1,2,7}。内建函数len()求集合的长度,max()求集合中元素最大值,min()求集合中元素最小值,所以s=1+6-3=4。
11、在Python中,下列哪个选项中的代码能够去除字符串 s = "------Hello World------"中的-?( )
s_clean = s.rstrip("-")s_clean = s.remove("-")s_clean = s.lstrip("-")s_clean = s.strip("-")正确答案:D
答案解析:选项 A 使用 rstrip() 方法去除字符串末尾端的-,与题目要求不符。选项 B 使用 remove() 方法尝试去除-,但 remove() 方法不能用于去除字符串中的-,而是用于列表。选项 C 使用 lstrip() 方法会去除字符串首端的-,与题目要求不符。选项 D 使用 strip() 方法会同时去除字符串首尾两端的-,符合题意。
12、在Python中,如果想输出 He said, 'Hello',以下哪个选项正确地输出这个字符串?( )
s = 'He said, 'Hello' 'print(s)s = 'He said, \'Hello\' 'print(s)s = \'He said, 'Hello'\'print(s)s = "He said, Hello"print(s)正确答案:B
答案解析:选项 B 正确地使用了转义符 \ 来表示单引号,这样字符串中的单引号就不会被误解为字符串的结束。选项 A 没有正确处理单引号,将导致语法错误。选项 C 错误地使用了 \ 转义符,将导致语法错误。选项 D 没有正确地包含单引号,将导致语法错误。
13、在Python中,现在有一个字符串 s = "welcome to python's world",下列选项中,哪个选项中的代码可以将每个单词的首字母大写。( )
d = s.title()d = s.upper()d = s.lower()d = s.capitalize()正确答案:A
答案解析:选项 A 正确地使用了 title() 方法将每个单词的首字母大写,其余字母小写。选项 B 使用 upper() 方法将整个字符串转换为大写,不符合题目要求。选项 C 使用 lower() 方法将整个字符串转换为小写,不符合题目要求。选项 D 使用 capitalize() 方法仅将整个字符串的首字母大写,其余字母小写,这与 title() 方法的效果不同。
14、在Python中,有字符串 s1 = "Hello" 和 s2 = "Python",以下哪种方法不能正确地连接这两个字符串?( )
result = s1 + " " + s2result = s1 + s2result = "".join([s1, " ", s2])result = s1.replace("", s2)正确答案:D
答案解析:选项 A 使用 + 运算符正确地连接了字符串,并在中间添加了一个空格。选项 B 也使用 + 运算符正确地连接了字符串。选项 C 使用 join() 方法正确地连接了字符串,并在中间添加了一个空格。选项 D 使用 replace() 方法试图替换字符串中的字符,但 replace() 方法用于替换字符串中的子串,而不是用于连接字符串,因此这个选项是错误的。
15、小明正在编写一个程序,用于处理一个班级学生的成绩。他需要筛选出所有及格的成绩(60分及以上)。以下是他的代码:
scores = [58, 72, 85, 64, 43, 90, 56]JiGe = [score for score in scores if score >= 60]print(JiGe) 请问这段代码的输出结果是?( )
[[72, 85, 64, 90]][58, 72, 85, 64, 43, 90, 56](72, 85, 64, 90)[72, 85, 64, 90]正确答案:D
答案解析:列表推导式[score for score in scores if score >= 60]会遍历scores列表,并筛选出所有大于或等于60的分数。因此,输出结果为[72, 85, 64, 90]。
16、关于下列代码运行结果的说法,错误的是?( )
scores = [58, 72, 85, 64, 43, 90, 56]HeGe = (score for score in scores if score >= 60) #筛选合格的同学ZongFen = sum(HeGe) #计算合格同学们的总分RenShu=len(HeGe) #统计合格同学的人数print(RenShu) HeGe是一个生成器对象ZongFen的值是311RenShu的值是4TypeError正确答案:C
答案解析:生成器推导式(score for score in scores if score >= 60)会生成一个生成器对象。调用sum(HeGe)会消耗生成器中的所有值,因此后续调用len(HeGe)时,生成器已经为空,生成器对象没有元素。
17、在Python中,运行下面的代码,输出结果为?( )
evens = (x for x in range(10) if x % 2 == 0)print(next(evens))print(next(evens))0 42 40 22 2正确答案:C
答案解析:生成器推导式(x for x in range(10) if x % 2 == 0)会生成一个惰性求值的生成器对象,只包含偶数。next()函数用于获取生成器的下一个值。第一次调用next(evens)返回序列的第一个偶数值0,第二次调用返回序列的第二个偶数值2。因此,输出结果为0 2。
18、以下代码运行后,输出的结果是?( )
r = range(10, 0, -2)print(list(r)[-1])02410正确答案:B
答案解析:range(10, 0, -2) 生成的序列为 10, 8, 6, 4, 2(不包含0);list(r)[-1] 取最后一个元素,即2。
19、表达式len(range(1,10,3))的值是?( )
4321正确答案:B
答案解析:range用于产生有序的整数序列,步长是3,因此产生的是1到9步长为3的整数序列,长度为3。
20、执行以下代码后,输出的结果是?( )
for i in range(6): if i % 2 == 0:continueelse: print(i, end=',') 1,3,5,1,3,51,2,3,4,5,1,2,3,4,5正确答案:A
答案解析:range(6)默认从0开始,continue表示退出当前循环,进行下一个循环。
21、以下哪个选项能生成一个从0到9的整数序列?( )
rang(0,9)range(1,10)range(10)range(9)正确答案:C
答案解析:range函数的语法是range(start, stop[, step]),其中start是起始值(包含),stop是结束值(不包含),step是步长。选项C中的range(10)会生成从0开始到9结束的整数序列,正好满足题目要求。
22、合唱比赛时,需要对10个班的出场顺序随机排序,对每个班级编号1-10,存入列表a,即a=[1,2,3,4,5,6,7,8,9,10],下列语句可以实现对a进行随机排序的是?( )
random.randint(1,10)random.shuffle(1,10)random.shuffle(a)random.choice(a)正确答案:C
答案解析:本题考察random模块的相关函数,random.shuffle(a)的功能是原地打乱列表a内元素的顺序。
23、在Python中导入math模块,执行语句x=math.ceil(5.26)后,变量x的值为?( )
55.35.266正确答案:D
答案解析:本题考察math模块的应用,math.ceil为向上取整。
24、以下哪个参数用于设置词云生成的图片背景颜色?( )
font_pathbackground_colormax_wordsmask正确答案:B
答案解析:background_color 参数用于指定词云图片的背景颜色,默认是黑色。其他选项:A用于字体路径,C限制最大单词数量,D设置词云形状。
25、执行以下代码后,输出的结果是?( )
import jiebajieba.add_word("深度学习")s = "深度学习是人工智能的核心技术"result = jieba.lcut(s) print(result) ['深度', '学习', '是', '人工', '智能', '的', '核心', '技术']['深度', '学习', '是', '人工智能', '的', '核心', '技术']['深度学习', '是', '人工', '智能', '的', '核心', '技术']['深度', '学习', '是', '人工智能', '的', '核心技术']正确答案:C
答案解析:jieba.add_word("深度学习") 会将 "深度学习" 作为整体添加到词典。分词时 "深度学习" 不再被拆分为 '深度' 和 '学习'。选项C符合预期。
26、在Python中,执行下列语句后,修改list2的元素不会影响list1。( )
list1 = [1, 2] list2 = list1 list2.append(4) print(list1) 正确答案:错
答案解析:错误。因为list2和list1引用同一个列表对象,修改其中一个会影响另一个。
27、小刚尝试用列表作为字典的键,例如key = [1, 2, 3],并执行my_dict = {key: "数据"}。这种做法是否正确?( )
正确答案:错
答案解析:列表是可变类型,不可作为字典的键。
28、在Python中,执行语句tuple(zip('xyz',range(4)))后,返回的结果是 (('',0)('x', 1), ('y', 2), ('z', 3))。( )
正确答案:错
答案解析:正确运行结果为(('x', 0), ('y', 1), ('z', 2))。在Python中,range(4)函数产生的整数序列是[0,1,2,3],zip()函数将字符串序列和整数序列重新组合成元组,长度不等长时,以长度短的元素为准。
29、在Python中,集合中元素类型可以是数字、字符串、列表、元组,但同一个集合中每个元素都是唯一的,不允许重复。( )
正确答案:错
答案解析:集合中只能包括数字、字符串、元组等不可变类型的数据,不能包含列表、字典、集合等可变类型数据。
30、执行以下Python语句后,程序会报错。( )
fruit={'apple','banana','peach'}fruit.remove('grape')正确答案:对
答案解析:集合中,remove()方法删除指定元素,若元素不存在会抛出异常;discard()方法也是删除指定元素,但若元素不存在会忽略该操作。
31、在Python中,以下代码的输出结果一定为True。( )
str1='好好学习,天天向上。'*1000str2='好好学习,天天向上。'*1000print(id(str1)==id(str2))正确答案:错
答案解析:Python 支持短字符串驻留机制,不支持长字符串驻留机制。Python 字符串的长度受限于可用内存的大小、性能等因素影响。
32、在Python中,字符串 s = "Hello AI",用s.find(" Ai")找出子串 " Ai" 在字符串s 中的起始索引位置时会报错。( )
正确答案:错
答案解析:s.find(" Ai") 错误地使用了小写的 " Ai",由于字符串 s 中的 " AI" 是大写,查找的子串 " Ai" 并不存在于字符串 s 中所以将返回 -1。
33、在Python中,可以用如下代码找到两个列表中相同的元素。( )
list1=[2,6,8] list2=[6,7,8,9] same=[(a,b) for a in list1 for b in list2 if a==b ] print(same) 正确答案:对
答案解析:在列表推导式中可以使用多个循环同时遍历多个列表。
34、range()函数可以用于生成一个包含浮点数的数列。( )
正确答案:错
答案解析:range()函数只能用于生成整数数列,无法生成包含浮点数的数列。
35、在jieba模块中,jieba.cut 需要手动转换为列表,jieba.lcut 直接返回列表。( )
正确答案:对
答案解析:jieba.cut 返回生成器(需用 list() 转换),而 jieba.lcut 直接返回列表,答案正确。
在人工智能系统中,历史操作指令常以列表形式存储。为提高存储效率和确保数据不可变性,需将连续重复的指令分组成元组。例如指令序列 [5,5,5,2,2,3] 会被优化为 [(5,5,5), (2,2), (3,)]。给定一个由整数组成的列表,请将其转换为由元组构成的列表,每个元组包含原列表中连续相同的元素片段。按顺序输出所有分组后的元组。
输入:5 5 5 2 2 3输出:(5,5,5),(2,2),(3,)numbers_input = input("请输入一些用空格分隔的数字: ")numbers = []for num_str ① numbers_input.split(): numbers.append(int(num_str))grouped_numbers = []if len(numbers) == ② : print("你没有输入任何数字。")else: current_group = [numbers[0]]for i in range(1, len(numbers)):if numbers[i] == numbers[ ③ ]: current_group.append(numbers[i]) else: grouped_numbers.append(tuple( ④ )) current_group = [numbers[i]] grouped_numbers.append(tuple(current_group)) output = ""for group in grouped_numbers: group_str = str(group) if output == "": output = group_str else: output = output + "," + ⑤ print(output) # 从用户输入获取一串数字,以空格分隔numbers_input = input("请输入一些用空格分隔的数字: ")numbers = []for num_str in numbers_input.split(): numbers.append(int(num_str))grouped_numbers = []if len(numbers) == 0: print("你没有输入任何数字。")else: current_group = [numbers[0]]for i in range(1, len(numbers)):if numbers[i] == numbers[i - 1]: current_group.append(numbers[i])else: grouped_numbers.append(tuple(current_group)) current_group = [numbers[i]] grouped_numbers.append(tuple(current_group)) output = ""for group in grouped_numbers: group_str = str(group)if output == "": output = group_strelse: output = output + "," + group_str print(output)评分标准:
in(或等效答案);(2分)0(或等效答案);(2分)i-1(或等效答案);(2分)current_group(或等效答案);(2分)group_str(或等效答案)。(2分)有一个字符消消乐游戏。随机产生一串长度为n只包含数字“456”的字符串,如有连续相同的字符则进行消除,提示:字符“0”的 ASCII码值是十进制48。
例如字符串“455655565”,其消除过程如下:
import random n=int(input("请输入字符串长度:"))s=""for i in range(n): #生成n个由“456”字符组成的字符串 m=random.randint(4,6) s=s+chr(48+ ① ) print("字符串为:",s)i=0while i<len(s): #变量i存储连续相同字符的起始位置索引 r=i #变量r存储连续相同字符的末尾位置索引while r<len(s)-1and ② : #留意r值的范围,索引不能越界 r=r+1if ③ : #当有2个及以上连续相同的字符,需要消除 s=s[:i]+ ④ ⑤ else: i=i+1print("消除后,字符串为:",s)import randomn=int(input("请输入字符串长度:"))s=""for i in range(n): #生成n个由“456”字符组成的字符串 m=random.randint(4,6) s=s+chr(48+m)print("字符串为:",s)i=0while i<len(s): #枚举思想,变量i存储连续相同字符的起始位置索引 r=i #变量r存储连续相同字符的末尾位置索引while r<len(s)-1and s[r]==s[r+1]: #留意r值的范围,索引不能越界 r=r+1if i<r: #当i<r时,说明有2个及以上连续相同的字符,需要消除 s=s[:i]+s[r+1:] #字符串为不可变序列,需要通过切片重组,消除s[i:r+1]部分子串 i=i-1#消除后返回到前一个字符位置,判断是否与后续字符相同else: i=i+1print("消除后,字符串为:",s) 评分标准:
m(或等效答案);(2分)s[r]==s[r+1](或等效答案);(2分)i<r(或等效答案);(2分)s[r+1:](或等效答案);(2分)i=i-1 或i-=1(或等效答案)。(2分)大明是学校Python编程社团的管理员,他用Python写了一个打卡考勤的程序,统计不同学生到信息技术教室编程打卡的次数以及未打卡的学生名单。这个程序可以一次输入已打卡学生姓名,用空格隔开,然后程序就会自动统计已打卡学生的名单和次数。如果有未打卡的学生,就输出未打卡的学生的名单,否则输出所有学生都已打卡。
# 创建一个空列表来存储打卡的学生姓名checked_in_list = [] students_input = input("请输入已打卡学生姓名,用空格隔开: ")students = students_input.split() checked_in_list. ① checked_in_students = ② all_students = {"唐僧", "孙悟空", "猪八戒", "沙和尚"}checked_count = {} for student in checked_in_students: checked_count[student]=checked_in_list.count(student) print("打卡的学生名单和次数:")for ③ in checked_count.items(): print(f"{student}: {count}次") not_checked_students = list( ④ ) if not_checked_students: print("未打卡的学生名单:")for student in not_checked_students: print(student) else: print("所有学生都已打卡。")checked_in_list = []students_input = input("请输入已打卡学生姓名,用空格隔开: ")students = students_input.split()checked_in_list.extend(students)checked_in_students = set(checked_in_list) all_students = {"唐僧", "孙悟空", "猪八戒", "沙和尚"}checked_count = {} for student in checked_in_students: checked_count[student]=checked_in_list.count(student) print("打卡的学生名单和次数:")for student, count in checked_count.items(): print(f"{student}: {count}次") not_checked_students = list(all_students - checked_in_students) if not_checked_students: print("未打卡的学生名单:")for student in not_checked_students: print(student) else: print("所有学生都已打卡。")评分标准:
extend(students)(或等效答案);(3分)set(checked_in_list)(或等效答案);(2分)student, count(或等效答案);(2分)all_students - checked_in_students 或 all_students.difference(checked_in_students)(或等效答案)。(3分)

后续会不定期分享真题,关注我不迷路!!!⬇️⬇️⬇️