内容正文:
2.4 可以复用的代码
一、选择题
1.在python中,range(10,0,-3)表示的范围是( )
A.10,9,8,7,6,5,4,3,2,1 B.-3,0,3,6,9
C.10,7,4,1 D.10,7,4,1,-2
2.运行以下程序后,从键盘上输入654,则输出的结果是( )
n=int(input("请输入一个整数:"))
while n!=0:
print(n%10,end="")
n//=10
A.654 B.456 C.645 D.564
3.小曲同学在学习了Python中的字典数据类型之后,编写了用户通讯录管理程序,下面是程序的部分代码,关于这个程序说法错误的是( )
A.定义的字典addressBook中,键是姓名,值是电话号码
B.在字典addressBook中,电话号码的数据类型是字符串
C.运行程序后输出结果为:|李明:|13523451234′,'张红':'13623213434'}
D.程序第3行作用是将键李明'所对应的值修改为'13887653457'
4.有如下Python程序段:
s=input()
occ=""
n=len(s)
rk=ans=0
for i in range(n):
while rk < n and s[rk] not in occ:
occ+=s[rk]
rk+=1
ans=max(ans,rk-i)
occ=occ[1:]
print(ans)
执行该程序段后,若输入字符串s的值为“ilovexuejun”,则输出ans的值为( )
A.6 B.7 C.8 D.9
5.根据列表中元素大小关系,升序排列各元素的索引,并将排序后的索引保存在列表y中。如列表s为[23,15,7,8,66,2], 程序运行后得到列表y为[5,2,3,1,0,4]。
def sort indices(s):
n =len(s)
y =[i for i in range(n)]
for i in range(① ):
for j in range(② ):
if ③ :
y[j],y[j+1]=y[j+1],y[j]]
return y
s=[23,15,7,8,66,2]
y=sort_indices(s)
print("各元素升序排列的序号: ",y)
完善以上程序,①②③三处代码依次是( )
A.n n-i s[y[j]]>=s[y[j+1]] B.N n-i y[j]>=y[j+1] C.n-1 n-i-1 s[y[j]]>=s[y[j+1]] D.n-1 n-i-1 y[j]>=y[j+1]
6.若a=8,b=5,则print(a,"-",b,"=",a-b)语句的输出结果是( )
A.a-b=3 B.8-5=3 C.a-b=a-b D.a-b=3
7.运行以下程序后,输出的结果是( )
s=0
for i in[-1,2.-3,4,-51:
s+=i
print(s)
A.5 B.6 C.-3 D.无法确定
8.执行如下程序段后,输出结果为( )
s="AgZnNaFGaHfMg"
elem=[]
cnt=0
tmp=s[0]
for ch in s[1:]:
if"A"<=ch<="Z":
elem.append(tmp)
cnt+=1
tmp=ch
else:
tmp+=ch
print(cnt,elem[-1])
A.6 Mg B.7 Mg C.6 Hf D.7 Hf
9.在 Python 语言中,运行以下程序段后,输出的结果是( )
L= [ 'a', 'b','c','d']
del (L [1])
print (L)
A.['b','c','d'] B.['a','b','c'] C.['a', 'b','d'] D.['a','c','d']
10.以下哪个Python代码片段正确实现了一个累加器模式( )
A.total = 0; for i in range(5): total += i B.total = 1; for i in range(5): total *= i
C.total = 0; for i in range(5, 0, -1): total -= i D.total = 1; for i in range(5): total /= i
11.某Python程序如下:
p="A!@#$%^&amp;*B"
c="cra2edu"
t=""
for i in range(len(c)//2+1):
if i%2==0:
t=t+c[len(c)-i-1]
elif c[i]>="0" and c[i]<="9":
t=t+p[int(c[i])]
else:
t=c[i]+t
print(t)
程序运行后,输出的结果是( )
A.rue@ B.cda! C.ure@ D.arc!
12.某列表a=[1,2,3,4,5,6],下列方式中,不能正确获取数字5的是( )
A.a[4] B.a[-2] C.a[4:5] D.a[4:][0]
13.在Python中,以下赋值语句的说法错误的是( )
A.语句a , b=3表示将3同时赋值给变量a和b B.“=”表示将右边表达式的值赋给左边的变量
C.语句x,y =y,x可以实现变量x和y值的互换 D.c+= a等效于c=c+ a
14.在Python编程中,以下哪个函数用于计算一组数值的平均值( )
A.sum() B.average() C.mean() D.avg()
15.列表a中有10个数据,用如下程序段找出大于60的数的个数,画线处可以填( )
a=[35,23,98,43,86,31,29,57,62,78]
n=θ
m=6θ
for i in a:
if :
n+= 1
print("个数: ",n)
A.a[i]>m B.i>m C.a>m D.a(i)>m
16.有如下Python程序段:
x=3
if x>=1:
x*=4
else:
x+=7
x/=2
print(x)
该程序段运行后,输出的结果为( )
A.12 B.10 C.6.0 D.5.0
17.有如下Python程序段:
import pandas as pd
s1 = pd. Series (["学习", "运动", "睡觉", "吃饭"], index = ["01", "02", "03", "04"])
sl ["03"] = "休息"
bm = s1. index
sub = s1. values
time = [40,90,79,30]
num = [13,2,10,3]
col = ["活动", "时长", "次数"]
data = {"活动": sub, "时长": time,"次数": num}
df1= pd. DataFrame (data, index = bm, columns = col)
print (df1[df1 ["时长"]*df1["次数"]>120])
运行该程序段,输出显示的结果为( )
活动时长次数
A. B.
C. D.
二、填空题
18.在Python中,使用 可以一次性迭代字典中的键和值。
19.运行以下Python程序,结果是 。
list1=['a','b','c','d','e']
list2=['f','g','h','i','j']
i=1
while i <= 3:
i=i + 1
print(list1[i]+list2[i])
20.编写Python程序时,下列表达式应写成( )
21.函数的调用采用 的方式。
22.Python内置函数 可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。
三、判断题
23.使用内置函数open()且以“w”模式打开的文件,文件指针默认指向文件尾。( )
24.在Python中,print("abc" * 3)的执行结果是"abcabcabc"。( )
25.在Python3.x语言中,input()函数的返回值类型是字符串。( )
26.Python语言的变量名要区分英文字母的大小写。( )
四、操作题
27.华氏度(℉):温度的一种度量单位。“华氏温标”是经验温标之一。寒暑表中通常有两个刻度:摄氏度(记为℃)和华氏度(记为℉)。包括我国在内的世界上很多国家都使用摄氏度,美国和其他一些英语国家使用华氏度而较少使用摄氏度。本程序实现的功能是当你输入输入cf表示摄氏转华氏,然后你输入的是摄氏温度值,并回车,根据换算公式就打印出华氏温度值。fc表示华氏转摄氏华氏温度。然后你输入的是华氏温度值,再回车,就可打印出对应的摄氏温度值。华氏度与摄氏度的换算:
华氏度 = 摄氏度 × 1.8+32
摄氏度 = (华氏度 - 32) ÷ 1.8
具体代码如下:
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.C
【详解】本题考查Python函数的描述。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。因此range(10,0,-3)的表示范围是10,7,4,1。故选C。
2.B
【详解】本题考查Python程序。程序中使用了input()函数获取用户输入的整数,并将其转换为整型数。接着使用while循环对输入的整数进行处理,循环条件为整数不等于0。在循环体内,使用取余运算符%获取整数的个位数,并使用end=""参数指定不换行输出。然后使用除法//将整数除以10,以去除个位数,继续下一次循环。最终输出的是输入整数的个位数、十位数、百位数……直到整数变为0。因此,要输入654,则输出的结果为456。故答案为:B。
3.C
【详解】本题考查Python字典相关内容。字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key-->value对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中,格式如下所示:d = {key1 : value1, key2 : value2 }。由图可知,字典addressBook中,键是姓名,值是电话号码,电话号码的数据类型是字符串,通过第3行代码,将'李明'所对应的值由'13523451234′修改为'13887653457',运行程序后输出结果为:{'李明':'13887653457','张红':'13623213434'},C选项错误。故本题答案是C选项。
4.B
【详解】本题考查Python程序。给定字符串“ilovexuejun”,我们需要找出不包含重复字符的最长子串,并输出其长度。程序使用了滑动窗口的方法,通过两个指针(i和rk)和一个临时字符串(occ)来实现。具体步骤如下:初始化:输入字符串s为“ilovexuejun”,occ为空字符串,n为字符串长度11,rk和ans都初始化为0。遍历字符串:对于每一个起始位置i,通过内循环移动rk指针找到最长的无重复字符子串,并更新occ和ans。内循环条件是rk未到达字符串末尾且字符s[rk]未出现在occ中。每次rk移动时,将当前字符s[rk]加入occ,并更新rk。内循环结束后,更新ans为当前最长无重复子串的长度rk-i。更新occ为去掉第一个字符的子串,为下一次迭代做准备。最后打印ans。根据以上过程,可知输出ans的值为:7。故答案为:B。
5.C
【详解】本题考查Python程序。冒泡排序外层循环次数是元素个数减1,所以①处应为n-1;内层循环开始范围是n-i-1,随着外层循环逐渐减小范围,所以②处为n-i-1;比较的是对应元素值的大小关系,应该是根据原始列表s中通过索引y对应的元素值来比较,即s[y[j]]>=s[y[j+1]],所以③处为s[y[j]]>=s[y[j+1]]。综上,正确答案是C。
6.B
【详解】本题考查的是Python输出函数。-、=用双引号,则原样输出;变量则输出其值;表达式则输出运算结果,故输出结果是:8-5=3。选B。
7.C
【详解】本题考查Python循环结构的应用。分析程序,可知该程序实现:s=0-1+2-3+4-5=-3。故选C。
8.C
【详解】本题考查Python程序设计相关内容。分析程序段,其功能是依次将'Ag', 'Zn', 'Na', 'F', 'Ga', 'Hf'添加到elem中,每添加1次,cnt加1(统计elem中元素个数),elem值为['Ag', 'Zn', 'Na', 'F', 'Ga', 'Hf'],cnt值为6,elem[-1]为Hf,故本题答案是C选项。
9.D
【详解】本题考查的是Python列表操作。列表索引号从0开始,del (L [1])表示删除索引号为0的元素。L= [ 'a', 'b','c','d'],del (L [1])将列表中'b'元素删除。最后L= [ 'a', 'c','d'],故选D。
10.A
【详解】本题考查Python代码。累加器模式是通过循环不断地将新的值加到一个总和变量上。选项A中,首先将total初始化为0,然后通过for循环遍历range(5)生成的0到4的数字序列,每次循环将当前的i值加到total上,实现了累加的功能。选项B是累乘,且初始值为1,但由于从0开始乘会导致结果为0。选项C是递减操作,不符合累加的要求。选项D是除法操作,也不符合累加的概念。故答案为:A。
11.A
【详解】本题考查Python程序。该程序使用循环和条件语句对字符串c进行处理,通过特定规则构建新的字符串t。规则如下:如果索引i是偶数,从字符串c的末尾取字符并追加到t中。如果索引i是奇数且字符是数字,则从字符串p中取对应索引的字符并追加到t中。如果索引i是奇数且字符不是数字,则将该字符插入到t的开头。经过程序的处理,最终输出结果是rue@。故答案为:A。
12.C
【详解】本题考查列表。列表a中,索引4对应的元素是5,A可以;索引-2对应的元素也是5,B可以;a[4:5]得到的是一个包含元素5的列表切片,而不是数字5本身,C不可以;a[4:]得到列表[5,6],再取其第一个元素就是5,D可以。所以答案是C。
13.A
【详解】本题考查Python赋值语句。在Python中,语句a,b=3并不会将3同时赋值给变量a和b。这种语法是错误的,实际运行时会引发ValueError,因为左侧有两个变量,右侧只有一个值,无法解包。正确的做法是分别给每个变量赋值,例如a=3和b=3,或者用a,b=3,3。故答案为:A。
14.C
【详解】本题考查Python函数。在Python中,mean()函数通常用于计算一组数值的平均值。故答案为:C。
15.B
【详解】本题考查Python程序。在这个程序段中,我们遍历列表a中的每个元素。for i in a这里的i依次表示列表a中的每个元素值。要找出大于60的数的个数,应该判断i是否大于60,即i>m。故答案为:B。
16.C
【详解】本题考查Python程序。x的初值为3,满足条件x>=1,因此先乘4,再除以2,除运算后产生实数值为6.0。故答案为:C。
17.B
【详解】本题考查的是程序调试与运行。根据最后一行语句可知,筛选的是时长和次数之积大于120的数据。根据倒数第二行语句可知,索引是bm,列标题是col。故本题应选B。
18.items()
【详解】本题考查Python基础。
在Python中,你可以使用items()方法一次性迭代字典中的键和值。items()方法返回一个包含字典中所有(键,值)对的视图对象。然后,你可以使用for循环遍历这个视图对象,从而在每次迭代中获取到一个键和对应的值。故正确答案为:items()。
19.ej
【详解】本题考查Python程序。首先,初始化list1=['a','b','c','d','e'],list2=['f','g','h','i','j'],i=1。然后进入while循环,条件是i<=3。第一次循环,i=1+1=2;第二次循环,i=2+1=3;第三次循环,i=3+1=4,此时循环结束。最后,输出list1[i]+list2[i],即list1[4]+list2[4],也就是'e'+'j',结果为'ej'。故答案为:ej。
20. x=(a-b)/(2*a)
【详解】本题主要考查Python表达式的运算。编写Python程序时,乘运算符是*,因此该表达式应写成x=(a-b)/(2*a)。
21.函数名(参数)
【详解】本题考查的是Python函数相关知识。函数的调用采用函数名(参数)的方式。
22.len()
【详解】本题考查的是Python函数相关知识。len()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。
23.错误
【详解】本题考查Python基础。
这个说法错误。当你使用内置函数open()以“w”模式打开一个文件时,文件指针默认是指向文件的开头,而不是指向文件尾。
24.正确
【详解】本题考查的是Python输出语句。*在字符串运算中表示重复。故print("abc" * 3)的执行结果是"abcabcabc"。题干说法正确。
25.正确
【详解】本题考查Python函数。input()函数用于从标准输入读取一行,并将其作为字符串返回。无论用户输入什么内容,input()函数返回的值始终是字符串类型。故说法正确。
26.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
27. float data-32 c
【详解】本题考查Python程序。
(1)使用float是为了将用户输入的温度值转换为浮点数类型。因为温度值可能包含小数部分,使用float可以更准确地处理包含小数的温度数值。故答案为:float。
(2)根据华氏度与摄氏度的换算公式,摄氏度=(华氏度-32)÷1.8。所以当进行华氏转摄氏的计算时,需要先将输入的华氏温度值减去32,即data-32。故答案为:data-32。
(3)在华氏转摄氏的计算中,经过前面的计算得到了摄氏温度值并存储在变量c中,所以最后打印的应该是计算得到的摄氏温度值,即c。故答案为:c。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$