内容正文:
第2单元 编程计算
一、选择题
1.以下哪个Python代码片段正确地展示了如何使用默认参数?( )
A.def func(a, b=5): return a + b B.def func(a, b): return a + b
C.def func(a=5, b): return a + b D.def func(b, a): return a + b
2.下列Python程序段的功能是:输入两个整数,通过计算,最终输出较大整数除以较小整数的余数。
a,b=eval(input("请输入两个整数:"))
if a<b:
a,b=b,a
while a>=b:
print(a)
则程序段划线处应填入的语句为( )
A.a=a+b B.a=a-b C.b=a%b D.a=a∥b
3.下列语句中,输出结果为整数18的是( )
A.print('1'+'8') B.print(int('1'+'8')) C.print(2+32/2) D.s="2018"; print(s[2:4])
4.下列常用函数不属于绘图函数的是( )
A.concat() B.plot() C.legend() D.scatter()
5.things=["香蕉","苹果","橙子","猕猴桃"],若想输出things元素“橙子”,正确的Python表达式为( )
A.print(things[-2]) B.print(things[3]) C.print(things["橙子"]) D.print(things[-1])
6.我国使用的手机号码为11位,其结构为:运营商编号(第1~3位)-地区编号(第4~7位)-用户编号(第8~11位)。某公司日常业务需要快速判断手机号码的运营商归属、地区编号。另外,因周年庆典需要筛选出一批幸运客户。现要筛选手机号码后3位可以被7整除,且中间一位为7的幸运客户。实现该功能的Python程序段如下:
#列表Tel_num存储客户的手机号码,元素类型为整型
num_list=[] #存储满足条件的电话号码
for i in Tel_num:
s=i%1000 #获取手机号码后三位
t= ①
if ② :
num_list.append(i) #append()函数用于向列表中添加新元素
划线①②处应填入的代码是( )
A.①s//10%10 ②s%7==0 and t==7 B.①s//10%10 ②s//7==0 and t==7
C.①s%10//10 ②s%7==0 or t==7 D.①s%10//10 ②s//7==0 or t==7
7.某Python程序如下:
i=0
flag=Trued
d={}
while i<len(s1)and flag:
ch1, ch2=s1[i], s2[i]
if ch1 not in d:
d[ch1]=ch2
elif d[ch1]!=ch2:
flag=False
i+=1
程序运行后flag的结果为True,则s1和s2的内容不可能为( )
A.冷言冷语 一心一意 B.大名鼎鼎 落落大方
C.滥竽充数 浑水摸鱼 D.寻寻觅觅 冷冷清清
8.在Python中,运行以下程序后,变量i的值是( )
i=0
while i<=40:
print(i)
i=i+8
A.40 B.48 C.32 D.56
9.有如下python程序段。
m = n = 0
for i in range(10):
if i % 3 == 0:
m += i
elif i % 3 == 1:
n -= i
运行程序后,下列说法正确的是( )
A.i的值为10 B.m+n的结果为-4 C.m-n的结果为30 D.m += i的执行次数为3
10.执行以下代码后,整型变量a和b的值分别是( )
a=2
b=3
a=a*b
b=a//b
a=a//b
A.2 3 B.6 2 C.3 2 D.6 3
11.在Python中,以下赋值语句的说法错误的是( )
A.语句a , b=3表示将3同时赋值给变量a和b B.“=”表示将右边表达式的值赋给左边的变量
C.语句x,y =y,x可以实现变量x和y值的互换 D.c+= a等效于c=c+ a
12.在Python中,以下语句不合法的是( )
A.x=y=10 B.x=(y=10) C.x+=x+y D.x.y=y,x
13.有如下程序段
p ="Tel-114"
c=""
for ch in p:
if ch>= "0" and ch<= "9":
c+=str(9-int(ch))
elif ch>= "a" and ch<= "z":
ch= chr(ord(ch) - 32)
if ch>= "A" and ch<= "Z":
c=ch+c
print(c)
执行程序后,输出的结果为( )
A.LET885 B.TEL885 C.elT114 D.LET-114
14.下列程序功能为:根据列表lst中各数字的大小关系,计算各数字升序排列的序号,并将序号保存在列表y中。如lst内容为[2,5,2,1],程序运行后列表y的值为[2,4,3,1]。
lst = [2,5,2,1]
y = [1,1,1,1]
n = len(lst)
for i in range(① ):
for j in range(② ):
if ③ :
y[j] = y[j] + 1
else
y[i] = y[i] + 1
上述程序段3个划线处的表达式分别为( )
A.(1)n-1 (2)i+1 (3)lst[j] > lst[i] B.(1)n-1 (2)i+1 (3)lst[j] >= lst[i]
C.(1)n (2)0 (3)lst[j] >= lst[i] D.(1)n (2)0 (3)lst[j] > lst[i]
15.在Python 中,代数式a÷b+5c正确的表达式是( )
A.a/b+c5 B.a%b+5/e C.a/b+5*c D.a//b+5 * *c
16.在Python语言中,语句“for i in range(4)”的作用是:循环执行for语句下面的句块次数( )
A.1 B.2 C.3 D.4
17.下列关于计算机编程解决问题的一般过程的描述正确的是( )。
A.利用计算机可以直接自动识别并解决问题
B.设计算法、编写程序和运行调试是一个不断反复的过程
C.算法只要设计完成,就不需要更改
D.程序编译成功后一定是可执行的
二、填空题
18.在Python中,使用 语句可以实现条件判断。
19.python 程序段如下:
a=[2,1,3,4,5]
c=0
for i in range(2,len(a)):
if a[i-2]+a[i-1]==a[i]:
c=c+1
print(c)
该程序段运行后,最后输出的内容是 。
20.用Python编写程序完成横线处求解鸡兔同笼问题,已知有56只头,160只脚,求鸡兔各有多少只?
定义变量i为鸡的只数
for i in range(1,56,1):
:
print(i)
print((160-i∗2)/4)
21.为Python程序文件python3.py补充语句,实现将a与b的积赋值给c。
python3.py文件内容为:
a = 8
b = 5
c =
print(c)
22.某 Python 程序如下:
n = int (input ())
sum = a = 3
res = 0
i=1
while i <= n:
res = res + sum
sum = sum * 10 + a
i = i + 1
print (res)
当输入n值为3时,程序输出结果是 。
23.用计算机解决问题的过程中,将程序输入到计算机进行检查、测试和运行,得到正确的结果。这一环节是 。
三、判断题
24.Python字典中的“键”可以是列表、元组、数字、字符串( )
25.Python os.path模块中的方法isdir()可以用来测试给定的路径是否为文件夹。( )
26.“天河一号”是我国研制的微型计算机。( )
27.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )
四、操作题
28.某酒店房间(房间数小于100)编号按1,2,3,…连续编号,客房管理人员对没有入住的房间使用如下简易方法来登记。连续的空房间,登记第一个房间的编号和连续的空房间数,比如有空房间1,2,6,7,8,10,则登记3条记录,分别为1_2,6_3,10_1.某旅客如果退房,需要把这个房间号也登记进去,共有4中情况需要处理:
●上靠:若退的房间号为3,则原来登记的记录变更为1_3,6_3,10_1;
●下靠:若退的房间号为5,则原来登记的记录变更为1_2,5_4,10_1;
●上下靠:若退的房间号为9,则原来登记的记录变更为1_2,6_5;
●上下都不靠:若退的房间号为4,则原来登记的记录变更为1_2,4_1,6_3,10_1
同理,若有旅客入住,则维护相应的登记信息。
根据上述规则,小明编写了相应的Python程序,程序启动时从文件中读取空房间数据,并按空房间起始编号从小到大排序,输入“+10”表示旅客入住10号房间,输入“-10”表示10号房间旅客退房。请回答下列问题:
(1)当前登记的记录有3条,分别为2_3,6_2,9_4.某旅客退掉8号房间,则登记的记录将变为 。
(2)编写sort函数,实现对空房间数据按空房间起始编号升序排序,该函数的程序代码如下:
#参数d中每个元素含2个数据项,第一个数据项为房间起始号,第二个数据线为连续的空房间数量
def sort(d):
i=0;n=len(d)
for i in range(l,n):
for j in range(1,n-i+1):
if :
d[j],d[j-1]=d[j-1],d[j]
return d
(3)实现上述功能的主程序如下,程序运行如图所示,请将划线处的代码补充完整。
"'从文件读取空房间数据,存入列表变量room,room[i][0]存储起始空房间号,room[i][1]存储连续的空房间数量,例如room=[[10,1],[1,3],[6,3]],代码略
空房间信息:
第1条记录:1_3
第2条记录:6_3
第3条记录:10_1
请输入退往)房号:-9
空房间信息:
第1条记录:1_3
2条记录:6_5
输入退(住)房号:-13
空房间信息:
第1条记录:1_3
第2条记录:6_5
第3条记录:13_1
请输入退(住)房号:
"'
room=sort(room)
for i in range(len(room)):
room[i]. append(i+1)空房间信息:
room[i][2]=-1
head=0
#输出空房间记录,代码略
while True:
rm=input("请输入退(住)房号:")
num=int(rm[1:])
if m[0]=''-'':进行退躲作
q=p=head
while ① ;
q=p
p=room[p][2]
if room[q][0]+room[q][1]==num:
if room[p][0]==num +l:
②
room[q][2]=room[p][0]
else:
room[q][1]+=1
elif num+1==room[p][0]:
room[p][0]=num
room[p][1]+1=1
else:
room. append([num,1,p])
if p=head:
head=len(room)-1
else:
③
elif rm[0]==''+'':能行入登记作
#代码略
#输出空胞记录,代码略
29.将摄氏温度(C)和华氏温度(F) 互转。互转公式:C=(F-32)/1.8 F=C*1.8+32
action = input("输入转换方式")#输入cf表示摄氏转华氏,fc表示华氏转摄氏
data =① (input("输入温度值"))
if action == 'cf':
f = data * 1.8 + 32
print(f)
else:
c = (② )/1.8
print(③ )
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查Python程序设计相关内容。给函数的参数设置默认值,这个参数就被称为默认参数;带有默认值的参数一定要位于参数列表的最后面的位置;调用函数时,因为默认参数在定义时已经被赋值,所以可以直接忽略;通过给参数设置默认值,可以让函数在某些情况下更加灵活和方便使用,如果调用函数时没有提供该参数的值,函数就会使用默认值,否则将使用传递给参数的值。
Python定义带有默认值参数的函数,其语法格式如下:
def 函数名(...,形参名,形参名=默认值): 代码块
在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。
四个选项中,A选项符合默认参数相关规定,选项正确。BD选项最后一个参数均没有默认值,选项错误;C选项第一个参数有默认值,第二个参数没有默认值,不符合默认参数相关规定。故本题答案是A选项。
2.B
【详解】本题考查Python基础。
本题程序的功能是实现a%b的结果,其算法是让a不断地减去b,直到a<b,此时a的值即为它们相除后的余数,因此正确答案为:选项B。
3.B
【详解】本题考查Python基础。
A选项输出的结果是字符串型18,C选项输出的结果是18.0,D选项输出的结果为字符串型18,B选项中,先将字符串'18'转换为整数18,然后输出,因此输出结果为整数18,故答案为B。
4.A
【详解】本题考查Python函数。concat()合并DataFrame对象;plot()绘制线形图;legend()显示图例;scatter()绘制散点图。故答案为:A。
5.A
【详解】本题考查Python基础。
things是列表,列表中单个元素的访问可以通过索引号来完成,索引号的编号有两种方式:从左到右递增,从0开始编号;从右到左递减,从-1开始编号。题目中输出橙子,从右到左递减,在列表的第二位,故索引为-2。故正确答案为:选项A。
6.A
【详解】本题考查程序设计。①取出后三位的中间数,故可以整除10后,去掉第三位。然后取余数10,得到中间数(整除后的最后一位)。②需要判断s能被7整除,排除选项B、D。且t为7,逻辑运算符为且,故排除C。故正确答案为选项A。
7.B
【详解】本题考查Python程序。程序遍历字符串s1和s2的每一对字符,并使用一个字典d来记录s1中的每个字符与s2中对应字符的映射关系。如果在遍历过程中发现s1中的某个字符已经有对应的字符但与当前s2中对应位置的字符不匹配,则映射关系无效,程序将flag置为False。如果整个遍历过程结束且flag仍为True,则说明s1和s2存在有效的一一字符映射关系。B选项中,字符映射关系: 大→落,名→落,鼎→大,鼎→方,其中鼎对应两个不同的字符,不满足一一映射关系。故答案为:B。
8.B
【详解】本题考查Python编程基础。分析程序段,其功能是在i<=40的条件下循环输出i的值,i的初始值是0,步长为8,即:0、8、16...,当i=48时,结束循环。故本题答案是B选项。
9.C
【详解】本题考查程序分析。i能被3整除,则累加i给m。i取余数为1,则累减i给n。运行结束后m=18,n=-12,则m-n为30。故选择C。
10.C
【详解】本题考查的是Python调试与运行。*表示乘,//表示整除。a=a*b=2*3=6,b=a//b=6//3=2,a=a//b=6//2=3。执行后整型变量a和b的值分别是:3 2,选C。
11.A
【详解】本题考查Python赋值语句。在Python中,语句a,b=3并不会将3同时赋值给变量a和b。这种语法是错误的,实际运行时会引发ValueError,因为左侧有两个变量,右侧只有一个值,无法解包。正确的做法是分别给每个变量赋值,例如a=3和b=3,或者用a,b=3,3。故答案为:A。
12.B
【详解】本题考查Python语句。在Python中,赋值操作不能出现在表达式内部,不能将赋值语句作为另一个赋值语句的一部分,因此x=(y=10)语句不合法。故答案为:B。
13.A
【详解】本题考查Python程序设计相关内容。分析程序可知,该程序将输入的字符串p中的数字变为9减去该数字后,再转换为字符,插入到字符串序列尾部;如为小写字母,则将其变为大写字母,并将其插入到字符串序列的前面;其余字符不连接到字符串中。p="Tel-114",则"Tel"转换为"LET";"-"不加入新字符串;"114"转换为"885",形成的新字符串c为"LET885",程序运行后,输出的结果是"LET885",故本题答案是A选项。
14.B
【详解】本题考查Python程序设计相关内容。本题是典型的数据查找比较程序,读取列表的每个元素,与剩余的所有元素做比较,查找有几个元素比该元素大,进而确定该元素位置。结合range函数特点,外层循环i执行n-1次(0~n-2)即可,外循环每执行一次,内层循环j均从0执行到i(小于i+1),元素逐一进行比较,若lst[j] >= lst[i]成立,表明lst[j]元素大些,其对应序号应加1,即 y[j] = y[j] + 1。所以①处答案为:n-1,②处答案为:i+1,③处答案为:lst[j] >= lst[i]。故本题答案是B选项。
15.C
【详解】本题考查Python表达式。Python中,乘运算符是“*”,除运算符是“/”,代数式a÷b+5c写成表达式是a/b+5*c,故选:C。
16.D
【详解】本题主要考查Python循环结构。range(4)生成0,1,2,3序列,故循环执行for语句下面的句块4次,选项D正确。
17.B
【详解】本题考查计算机解决问题相关内容。A选项,计算机不能直接识别并解决问题,选项错误。B选项,设计算法、编写程序和运行调试是一个不断反复的过程,选项正确。C选项,算法设计是一个不断反复修改完善的过程,选项错误。D选项,编译成功的程序不一定是可执行程序,选项错误。故本题答案是B选项。
18.if
【详解】本题考查Python分支结构的描述。在Python中,条件判断可以使用 if 语句来实现。if 语句用于根据条件的真假来执行不同的代码块。可以结合 elif 和 else 语句来处理多种情况。
19.2
【详解】本题考查程序设计。
该程序输出,统计列表中前面两个数相加等于第三个数的个数。第一次循环1+2等于3,c+=1。第二次循环1加3等于4,c+=1;第三次循环3+4不等于5。故正确答案为:2。
20.if i ∗ 2+(56-i)∗ 4==160
【详解】本题考查Python程序设计相关内容。本题描述的是鸡兔同笼问题,假设鸡的数量为i,则兔的数量为56-i,两者需要满足i ∗ 2+(56-i)∗ 4==160,才符合题目要求,程序段缺少该条件的判断,故本题答案是:if i ∗ 2+(56-i)∗ 4==160。
21.a*b
【详解】本题考查的是Python表达式。*表示乘,实现将a与b的积赋值给c,即c =a*b。
22.369
【详解】本题考查的是Python循环语句。初始i=1,sum = a = 3,当输入n值为3时。
i<=3成立,res = res+sum=3, sum=sum*10+a=30+3=33,i=i+1=2;
i<=3成立,res = res+sum=36, sum=sum*10+a=330+3=333,i=i+1=3;
i<=3成立,res = res+sum=369, sum=sum*10+a=3330+3=3333,i=i+1=4;
i<=3不成立,故输出res为369。
23.调试运行程序
【详解】本题考查计算机解决问题的一般过程相关内容。计算机解决问题的一般过程是:分析问题→设计算法→编写程序→调试运行程序。将程序输入到计算机进行检查、调试和运行,得到正确的结果。这一环节是调试运行程序,故本题答案是:调试运行程序。
24.错误
【详解】本题考查Python基础。
列表(list)由于是可变的(可以添加、删除或更改其中的元素),因此不能用作字典的键。故错误。
25.正确
【详解】本题考查Python基础。
在Python的os.path模块中,isdir()函数用于测试给定的路径是否为一个目录(文件夹)。如果路径确实指向一个目录,则返回True;如果不是,或者路径不存在,则返回False。故正确。
26.错误
【详解】本题考查计算机基础内容。“天河一号”是我国首台运算速度达到每秒2570万亿次的超级计算机。“天河一号”超级计算机由中国国防科技技术大学于2008年开始研制,并部署在位于天津的国家超级计算机中心。故本题答案是:错误。
27.正确
【详解】本题考查Python循环结构的描述。如果循环以“while 1:”开头,while的条件是1,非零即为真,在不加干预的情况下,程序会一直运行下去,陷入死循环。表述正确。
28. 2_3,6_7 d[j-1][0]>d[j][0]或其他等价答案 p!=-1androom[p][0]<num或其他等价答案 room[q][1]+=room[p][1]+1或其他等价答案 room[q][2]=1en(room)–1或其他等价答案
【详解】本题考查程序分析。
(1)某旅客退掉8号房间,则需要上下靠,故正确答案为:2_3,6_7。
(2)升序排序算法,if条件判断当d[j][0]<d[j-1][0]时,需要交换交换元素值,故正确答案为:d[j-1][0]>d[j][0]或其他等价答案
(3)①while循环判断进入链表查找退房的房号,应该合并到哪个房间区间,判断条件为是否到链表末尾,并且当前房号是否小于退房房号。故正确答案为:p!=-1 and room[p][0]<num或其他等价答案。②当后节点的房号正好等于退房房号加1,故需要前后靠,更新房间数量。故room[q][1]+=room[p][1]+1或其他等价答案。 ③当p不是头节点时候,更新q节点的下一个节点的索引(新追加房间总量减1),故room[q][2]=1en(room)–1或其他等价答案。
29. float data-32 c
【详解】本题考查的是Python的选择语句。①input接收的是字符数据,需要转换为浮点型,故此处应为:float。②华氏转摄氏公式:C=(F-32)/1.8 ,故此处应为:data-32。③转换后存储在c中,故此处应为:c。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$