更多真题在线练习系统:历年真题在线练习系统
一、单选题(共25题,共50分)
1. 以下选项中,哪一项转换后对应十进制数不是10?( )
A. 0b1010
B. 0o12
C. 0xa
D. 0d11
标准答案:D
试题难度:一般
试题解析:A选项,二进制1010转换为十进制为10;B选项,八进制12转换为十进制为10;C选项,十六进制a转换为十进制为10。
2. 以下选项中不会报错的是?( )
A. a='10'+0
B. int('X')
C. b=10/0
D. float(1.2)
标准答案:D
试题难度:一般
试题解析:A选项,'10'为字符串,0为整型,不能相加,错误提示TypeError;B选项,X是字母,不能转整型,错误提示ValueError;C选项,0不能为除数,错误提示ZeroDivisionError;D选项,运行结果为1.2,不会报错。
3. 将十进制数52转换为二进制数时,该二进制数的位数是?( )
A. 3
B. 4
C. 5
D. 6
标准答案:D
试题难度:容易
试题解析:将52除2取余,逆序输出,得到的答案是110100。
4. 下面哪个数值和其他不一样?( )
A. int("0O30",8)
B. (18)16
C. (25)10
D. (11000)2
标准答案:C
试题难度:一般
试题解析:(30)8=(18)16=(24)10=(11000)2,故选C。
5. 将十进制数522转换为十六进制数,最低位上的数是?( )
A. 8
B. 9
C. A
D. B
标准答案:C
试题难度:一般
试题解析:将522除以16取余,余数为十进制10,转为十六进制是A。
6.以下代码的运行结果是?( )
numbers = [1, 2, 3, 4, 5]
result = list(map(str, numbers) )
print(result)
A. 1, 2, 3, 4, 5
B. ['1', '2', '3', '4', '5']
C. None
D. [1, 2, 3, 4, 5]
标准答案:B
试题难度:一般
试题解析:map()函数返回一个迭代器,map的第1个参数是str,所以会把numbers列表中的每个元素转换成字符串类型,使用list转换后的结果是列表,所以选择B选项。
7. divmod(134, 4)的结果是?( )
A. [33, 2]
B. (33, 2)
C. (2, 33)
D. [2, 33]
标准答案:B
试题难度:一般
试题解析:134除以4的结果是33余2,divmod()函数返回一个元组,元组中第1个数是除法的商,第2个数是余数,所以本题选择B。
8. 函数round(3.576, 2) 的返回结果是?( )
A. 3.50
B. 3.58
C. 3.57
D. 4.00
标准答案:B
试题难度:一般
试题解析:round() 函数用于对浮点数进行四舍五入。当指定小数位数为2时,3.576 会四舍五入到 3.58,选择B。
9. 函数bool(None)的返回结果是?( )
A. True
B. False
C. None
D. 0
标准答案:B
试题难度:容易
试题解析:None的布尔值是False。
10. 以下哪个函数可以用来将列表转换为集合?( )
A. list()
B. dict()
C. tuple()
D. set()
标准答案:D
试题难度:容易
试题解析:set函数的功能是将括号中的参数转换为集合。
11. 在Python中,以下哪个表达式将返回False?( )
A. any([1, 2, 0])
B. any(['', 'hello', '!'])
C. any([{}, {1:2}, {3:4}])
D. any([False, False, False])
标准答案:D
试题难度:较难
试题解析:any()函数在可迭代对象中找到任何为True的元素时返回True。选项D中的所有元素都是False,因此any([False, False, False])将返回False。
12. 以下哪个表达式将返回字符串'123'?( )
A. str(123.456)
B. int('123.456')
C. str(123)
D. float('123')
标准答案:C
试题难度:一般
试题解析:
str(123)将整数123转换为其字符串表示形式'123'。
选项A将返回一个包含更多数字的字符串(即小数点后的数字),
选项B会引发ValueError,因为'123.456'不能被直接转换为整数,
选项D将返回一个浮点数而不是字符串。
13. 下列哪个选项是用正确的方式来处理 input() 函数返回的字符串,以便将其转换为一个整数?( )
A. num = input("请输入一个数字:")
B. num = int(input("请输入一个数字:"))
C. num = str(input("请输入一个数字:"))
D. num = float(input("请输入一个数字:"))
标准答案:B
试题难度:一般
试题解析:为了将 input() 函数返回的字符串转换为一个整数,我们需要使用 int() 函数。选项 A 只是将输入作为字符串存储,选项 C 将输入转换为字符串(这是多余的),选项 D 将输入转换为浮点数。因此,选项 B 是正确的。
14. 下列程序运行的结果是?( )
try:
a=6
b=0
c=a/b
print(c)
except:
print('error!')
A. 6
B. 0
C. c
D. error!
标准答案:D
试题难度:容易
试题解析:考核try-except进行异常处理,因为进行除法时除数为0,try代码块剩余代码被忽略,执行except处代码,所以运行结果为D。
15. 函数abs(-2.6)的返回值是?( )
A. -2.6
B. 2.6
C. 2
D. 6
标准答案:B
试题难度:容易
试题解析:考核abs(),负实数的绝对值为正实数。
16. 函数ord("C")的返回值是什么?( )
A. 48
B. 57
C. 67
D. 99
标准答案:C
试题难度:容易
试题解析:考核ord(),"A"的ASCII码为65,"C"的ASCII码为67。
17. 以下哪个选项不是算法的基本结构?( )
A. 顺序结构
B. 分支结构
C. 循环结构
D. 查找结构
标准答案:D
试题难度:容易
试题解析:算法的3种基本结构是顺序结构、分支结构、循环结构。
18. 超市购物促销:购物满49元减5元,购物满99元减15元,根据所购物品金额求优惠率。解决此问题的合适算法是?( )
A. 解析算法
B. 枚举算法
C. 排序算法
D. 递归算法
标准答案:A
试题难度:容易
试题解析:利用解析算法解决此问题。
19. 关于二分查找算法,下列描述错误的是?( )
A. 二分查找的前提是被查找的数据序列是有序的
B. 二分查找的次数难以确定,常用while语句实现循环
C. 二分查找最坏的情况是查找n次结束
D. 二分查找的区间范围会逐渐缩小
标准答案:C
试题难度:一般
试题解析:考核二分查找。二分查找最坏的情况是查找log2n+1次结束。
20. Python表达式abs(int(-4.6))的计算结果是?( )
A. 4
B. -4
C. 5
D. -5
标准答案:A
试题难度:容易
试题解析:int()表示取整,即小数点前的整数,abs()表示求绝对值,因此-4的绝对值为4。
21. 小明编写了下列4行代码,请问,代码运行到最后,屏幕上打印出来的结果是?( )
a = ['红','橙','黄']
b = [1,2,3]
c = [b,a]
print(c[1][0])
A. 2
B. 1
C. 橙
D. 红
标准答案:D
试题难度:容易
试题解析:考查学生对嵌套列表中,元素位置的理解。同时考查学生对用已有列表创建新列表的理解。
22.
下面代码从"成绩.csv"文件中读出数据,并将数据以列表形式存储。请问,划线处的代码应该为?( )
f=open('成绩.csv','r')
a=f.read().strip().split(______)
f.close()
A. '。'
B. ','
C. '\t'
D. '\n'
标准答案:B
试题难度:容易
试题解析:应为英文的',',使用英文逗号进行数据分隔。
23. 以下代码将建立一个名为"姓氏.csv"的文件,划线处的代码应该为?( )
a=['赵','钱','孙','李','周','吴','郑','王']
f=open('姓氏.csv',______)
f.write(','.join(a)+'\n')
f.close()
A. ‘W’
B. 'R'
C. 'w'
D. 'r'
标准答案:C
试题难度:容易
试题解析:小写的w,可新建文件并写入内容。
24. 如下图所示,有一个名为"价格.csv"的文件。小明针对这个文件编写了5行代码。
请问,代码运行到最后,打印在屏幕上的结果是?( )
with open('价格.csv', 'r', encoding='utf-8') as f:
for line in f.readlines():
a = line.strip().split(",")
if a[1] == '9' :
print(a[0])
A. 西瓜
B. 椰子
C. 桔子
D. 香梨
标准答案:B
试题难度:一般
试题解析:本题考查学生对列表切片中,每个数据位置的理解 。此题中的a[1],应该对应椰子的价格,所以正确答案是B。
25.
如下所示的2行代码,最后print()函数打印出来的结果是?( )
c = [['赵大',21,'男','北京'],['钱二',20,'男','西安'],['孙三',18,'女','南京'],['李四',20,'女','杭州']]
print(c[1][3])
A. 男
B. 北京
C. 西安
D. 女
标准答案:C
试题难度:容易
试题解析:考查学生对二维列表中,每个列表值顺序的理解。
二、判断题(共10题,共20分)
26. hex()函数可以将十进制数转换成十六进制数。在Python交互式编程环境下,执行语句hex(11)后,显示的运行结果是'b'。( )
A. 正确
B.错误
标准答案:错误
试题难度:一般
试题解析:hex(11)可以将十进制数11转换成十六进制数,但十六进制数表示为0xb。
27. 二进制数、八进制数与十六进制数的末位如果是“1”,各转换为十进制数后都是奇数。( )
A. 正确
B.错误
标准答案:正确
试题难度:一般
试题解析:二进制、八进制、十六进制末位数决定该数奇偶。
28. 使用with语句打开文件并处理文件后,必须使用close()函数关闭文件,以确保所有数据都被写入磁盘并释放系统资源。( )
A. 正确
B.错误
标准答案:错误
试题难度:一般
试题解析:在Python中,使用 with 语句打开文件可以确保文件在读取或写入后被正确关闭,不用自己调用close()函数。
29. range(1, 11, 2)会生成一个包含数字1, 3, 5, 7, 9, 11的序列。( )
A. 正确
B.错误
标准答案:错误
试题难度:一般
试题解析:range(1, 10, 2)会生成一个包含数字1, 3, 5, 7, 9的序列。注意range函数包头不包尾,生成的序列不包括11。
30. 使用sorted()函数可以给列表排序,参数reverse设置为True时,按从小到大排序;参数reverse设置为False时,按从大到小排序。( )
A. 正确
B.错误
标准答案:错误
试题难度:一般
试题解析:参数reverse设置为True时,降序排序;参数reverse设置为False时,升序排序。
31.
以下代码可以计算列表a中各元素(得分)的平均分。( )
a = [90, 80, 70, 60, 50]
print( sum(a) / len(a) )
A. 正确
B.错误
标准答案:正确
试题难度:一般
试题解析:sum(a)可以计算列表a的各元素总和,len(a)可以计算列表a的长度(元素个数),两者相除得到平均值。
32. all([])和any([])的结果都是True。( )
A. 正确
B.错误
标准答案:错误
试题难度:容易
试题解析:all([])的结果是True,any([])的结果是False。
33.
列表中的pop()方法和del语句都能删除列表中被指定的元素。所以,如下4行代码运行之后,屏幕上将打印出 ['红','绿','蓝'],这个运行结果是对的。( )
list1 = ['红','绿','蓝','白','紫']
del list1[3]
list2=list1.pop(3)
print(list2)
A. 正确
B.错误
标准答案:错误
试题难度:一般
试题解析:本题主要考查学生对del语句与pop()方法的理解与掌握。两者都能删除列表中指定的元素,但又有区别,代码首先del删掉“白”字,然后pop()删掉'紫'字,pop()方法删掉的字被赋给了变量list2,所以最后打印出的应该是'紫'字,不是['红','绿','蓝'],应选运行结果“错误”。
34. 如果list1 = ['赵','钱','孙','李','周','吴','郑','王'],那么:
list1[1:-4] 肯定与 list1[1:4] 相等。请判断对吗?( )
A. 正确
B.错误
标准答案:正确
试题难度:容易
试题解析:考查学生对列表切片时,切片起始位置、终止位置的理解。本题两个切片的结果都是['钱', '孙', '李'],所以两切片相等,是正确的。
35.
读以下程序代码,运行程序后,输出的是:发生了一个异常。( )
try:
print(x)
except:
print("发生了一个异常")
finally:
print("请修改程序,再试一次!")
A. 正确
B.错误
标准答案:错误
试题难度:一般
试题解析:无论try语句是否异常,Finally都会被执行。
运行代码后,输出的结果是:
发生了一个异常
请修改程序,再试一次!
三、编程题(共3题,共30分)
36. 分解质因数
输入一个整数,分解质因数。例如:输入90,打印出90=2*3*3*5。请完善以下代码,运行程序。
target=int(input('输入一个整数:'))
print(target,'= ',end='')
if target<0:
target= ① (target)
print('-1*',end='')
flag=0
if target<=1:
print(target,end='')
flag= ②
while True:
if flag:
break
for i in range(2,int(target+1)):
if ③ :
print("%d"%i,end='')
if target==i:
flag=1
break
print('*',end='')
④
break
标准答案:
参考代码:
target=int(input('输入一个整数:'))
print(target,'= ',end='')
if target<0:
target=abs(target)
print('-1*',end='')
flag=0
if target<=1:
print(target,end='')
flag=1
while True:
if flag:
break
for i in range(2,int(target+1)):
if target%i==0:
print("%d"%i,end='')
if target==i:
flag=1
break
print('*',end='')
target/=i
break
试题难度:较难
试题解析:
评分标准:
(1)abs 或等效答案;(2分)
(2)1 或等效答案;(3分)
(3)target%i==0 或等效答案;(3分)
(4)target/=i 或等效答案。(2分)
37. 成绩系统
小王同学编写了一个成绩录入和查询系统,能实现输入多个互不相同的分数,自动进行从高到低排名,同时输入要查询的分数,可以获得相应同学的姓名。程序运行结果如下图所示,实现代码如下,请你补全空缺处。
n=int(input("请输入总人数:"))
name=[""]*n
score=[0]*n
#输入功能,分别输入姓名与分数
for i in range(n):
name[i]=input("请输入第"+str(i+1)+"个人名:")
① =int(input("请输入第"+str(i+1)+"个分数:"))
#排名功能
for i in range(n-1):
for j in range(0,n-1-i):
if score[j] ② score[j+1]:
score[j],score[j+1]=score[j+1],score[j]
name[j],name[j+1]=name[j+1],name[j]
print("——————各个同学分数排名如下——————")
print(name)
print(score)
#查询功能
i=0
③
key=int(input("请输入要查询的分数:"))
b=-1
while i<=j and b==-1:
m=(i+j)//2
if score[m]==key:
b=m
elif score[m]<key:
j= ④
else:
i=m+1
if b==-1:
print("没有同学获得该分数!")
else:
print("分数为"+str(key)+"的同学是:"+ ⑤ )
标准答案:
参考程序:
n=int(input("请输入总人数:"))
name=[""]*n
score=[0]*n
#输入功能,分别输入姓名与分数
for i in range(n):
name[i]=input("请输入第"+str(i+1)+"个人名:")
score[i]=int(input("请输入第"+str(i+1)+"个分数:"))
#排名功能
for i in range(n-1):
for j in range(0,n-1-i):
if score[j]<score[j+1]:
score[j],score[j+1]=score[j+1],score[j]
name[j],name[j+1]=name[j+1],name[j]
print("——————各个同学分数排名如下——————")
print(name)
print(score)
#查询功能
i=0
j=n-1
key=int(input("请输入要查询的分数:"))
b=-1
while i<=j and b==-1:
m=(i+j)//2
if score[m]==key:
b=m
elif score[m]<key:
j=m-1
else:
i=m+1
if b==-1:
print("没有同学获得该分数!")
else:
print("分数为"+str(key)+"的同学是:"+name[m])
试题难度:较难
试题解析:
评分标准:
(1)score[i](或等效答案);(3分)
(2)<(或等效答案);(3分)
(3)j=n-1(或等效答案);(3分)
(4)m-1(或等效答案);(4分)
(5)name[m](或等效答案)。(3分)
38. 统计总分
有下图左边名为“虚拟学校5年级学生数据.csv”的文件,要实现下图右边统计每位同学语、数、外三门学科的总分,小明编写了以下程序,请将红色 ①、② 两处的代码补充完整:
f = open('/data/ ① ','r',encoding='utf-8')
i = 1
for line in f:
s = ""
a = line.strip("").split(",")
if i >= 2 : #第一行是每列的标题,不用计算,要从第二行开始计算
s = str( ② ) + ' 的总分为:' + str(int(a[5]) +int(a[6]) +int(a[7]) )
i = i + 1
print(s)
f.close
标准答案:
参考程序:
f = open('/data/虚拟学校5年级学生数据.csv','r',encoding='utf-8')
i = 1
for line in f:
s = ""
a = line.strip("").split(",")
if i >= 2 : #第一行是列标题不用计算,要从第二行开始计算
s = str(a[0]) + ' 的总分为:' + str(int(a[5]) +int(a[6]) +int(a[7]) )
i = i + 1
print(s)
f.close
试题难度:容易
试题解析:
评分标准:
(1)虚拟学校5年级学生数据.csv 或等效答案;(2分)
(2)a[0] 或等效答案。(2分)