内容正文:
第2单元 编程计算
一、选择题
1.若用整型变量xq表示某天是星期几,例如:xq=1表示该天是星期一,xq=2表示该天是星期二,……,xq=7表示该天是星期日,则表示当前xq的前一天是星期几的Python语句是( )
A.(xq-1)%7 B.xq%7 C.xq%7+1 D.(xq+5)%7+1
2.写出“韩信点兵”问题的求解步骤属于( )
A.分析问题 B.设计算法 C.编写程序 D.设计运行
3.Python表达式“abs(3-5%3**2)//2”的值是( )
A.1 B.2 C.4 D.5
4.下列Python表达式中值最小的是( )
A.2**2+5%13//9 B.3*7//2-8 C.len("abed1234") D.abs(-5)
5.某算法的部分流程图如图所示,执行完这部分流程后,变量 i,s 的值分别是( )
A.3,9 B.4,18 C.5,18 D.6,43
6.计算机的应用渗透到社会各行各业,其中天气预报体现了计算机在( )方面的应用。
A.过程控制 B.科学计算 C.人工智能 D.信息处理
7.执行以下python程序,若输入的值是2,则输出的结果是( )
a=int(input( ))
a=a**3
print(a)
A.2 B.4 C.6 D.8
8.有如下Python程序段:
a=[6,-9,-6,8,7,4,-3,-1]
n=len(a)
for i in range(n-1):
for j in range(n-1,i,-1):
if a[j]>a[j-1]:
a[j],a[j-1]=a[j-1],a[i]
if a[i]<0:
break
执行该程序段后,下面说法正确的是( )
A.a[0]到a[n-1]升序排序 B.a[0]到a[n-1]降序排序
C.方框里的语句总共执行了4次 D.变量i的值为4
9.已知x=20,y=21,以下表达式的计算结果为True的是( )
A.x>=y-1 or (x+1)!=y B.not (x<=y)
C.x<y-1 and x-1==y D.x>y-2 and x! =y-1
10.有如下程序段:
s = "aabbbccdd"
n = len(s); i = 3
while i < len(s):
if s[i] == s[i - 1] and s[i-2] == s[i - 3]:
s = s[:i] + s[i + 1:]
else:
i += 1
执行该程序段后,变量s的值是( )
A."abcd" B."aabbcd" C."aabcd" D."aabccd"
11.以下不属于算术运算符的是( )
A.** B.% C.!= D./
12.以下代码可实现把多个升序链表合并成一个升序链表
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(list1, list2):
if (1) or (2) :
list1, list2 = list2, list1
if (3) :
list1.next =(4)
return list1
def mergeKLists(list1):
if (5) :
return None
if len(list1) == 1:
return list1[0]
mid = len(list1) // 2
left, right = mergeKLists(list1[:mid]), mergeKLists(list1[mid:])
return mergeTwoLists(left, right)
划线处(1)(2)(3)(4)(5)应填入的正确代码有
①(list2 and list1.val > list2.val) ②(list1 and list2.val > list1.val) ③list1,list2=list2,list1
④mergeTwoLists(list1.next, list2) ⑤mergeTwoLists(list1, list2.next) ⑥not list1 ⑦not list2
⑧list1 ⑨list2
则正确代码的顺序是( )
A.⑥①⑧④⑥ B.⑦②⑥④⑥ C.⑥①⑨④⑥ D.⑦②⑨④⑥
13.有如下程序段,该程序段运行后,变量x的值为( )
x = 3
if x >= 1:
x *= 4
else:
x += 8
x /= 2
print(x)
A.12 B.6 C.0 D.10
14.在 Python程序设计语言中,if语句属于( )
A.顺序结构 B.分支结构 C.循环结构 D.流程结构
15.执行下面的Python程序段后,変量i的值为( )
for i in range(6):
print (i)
A.6 B.1,2,3,4,5,6 C.0,1,2,3,4,5 D.0,1,2,3,4,5,6
16.有如下Python函数:
def trans(num,n):
s="0123456789ABCDEF"
if num<n:
return s[num]
else:
return trans(num//n,n)+s[num%n]
print(trans(394,16))
执行语句a=trans(394,16)后,a的值为( )
A.19A B.1810 C.180 D.18A
17.判断整数x是否奇偶的部分Python 程序段如下:
if x%2==0:
y="even"
else:
y="odd"
下列选项中与上述语句块功能相同的是()
A. B. C. D.
18.如图所示代码,当输入23时,输出结果为:( )
s= int( input("请输入:") )
if s<5:
print("小了")
elif s<15:
print("还是有点小了")
elif s<25:
print("差不多")
else:
print("很好")
A.小了 B.很好 C.差不多 D.还是有点小了
二、填空题
19.在Python中,使用 可以快速生成一个特定范围内的数列。
20.执行如下程序,写出运行结果。
a=input()
b=input()
c=int(a+b)
d=int(a)+int(b)
print(c,d)
键盘依次输入33和44,则输出结果为 。
21.在Python中,range()函数可以生成一个整数序列,但是它生成的序列不包含序列的上限值,即range(10)会生成从0到 的序列。
22.Python表达式125//3的运算结果是( )
23.阅读下列程序,写出运行结果
sum=0
for k in range(1,11):
if k%2==0:
sum=sum+k
print(sum)
程序运行后输出结果是: 。
24.当飞船速度“v>=7.91”时,输出“飞船成功飞行!”,否则输出“飞船不能升空!”。
v=input(“请输入速度(千米/秒):”) 第1行
if v>=7.91: 第2行
print("飞船成功飞行!") 第3行
else 第4行
print("飞船不能升空!") 第5行
(1)第 行,改正后的语句 。
(2)第 行,改正后的语句 。
三、判断题
25.已知列表x = [1, 2],执行语句y = x后,表达式id(x) == id(y)的值为True。( )
26.在Python 3中,使用内置函数input()接收用户输入时,不论用户输入什么格式的内容,一律按字符串进行返回。( )
27.下列程序段中,赋值语句s=s+i被重复执行了10次。( )
s=0
for i in range(10):
s=s+i
28.读下面的python程序,在划线处填写上“a<b”,则程序的输出结果是True。( )
a=5
b=8
if :
print("True")
else:
print("Flase")
29.利用编程解决问题的第一步是设计算法。( )
30.for循环与while循环任何时候都不可以相互替换。( )
四、操作题
31.密码系统包括明文、密文、密钥和密码算法四个方面。原有的信息称为明文,明文经加密变换后的形式称为密文;由明文变为密文的过程称为加密,通常由加密算法实现;由密文还原为明文的过程称为解密;通常由解密算法实现。现某明文字符串由大小写字母和数字组成,其加密算法描述如下①将明文中的大写小写字母相互转换,数字字符不变;②将转换后的字符串字符按ASCII码值后移t位;③将新字符串倒序输出。
例如,当明文为“1Az8bK”,密钥t=3时,加密过程如图所示
(1)若明文为“b9XY2e”,t-4,则密文是
(2)实现解密的Python程序如下,请在划线处填入合适的代码
def yw(s,k): #将字符串中字符按ASCI码值前移k位
s1=“”
for i in s:
ch=i
if "0"<=ch<="9":
ch=str((int(ch)-k+10)%10)
elif "A"<=ch<="Z":
ch=
else:
"将字符串中的小写字符前移k位并存在变量ch中,代码略"
s1=s1+ch
return sl
def hw(s): #将字符串中大写小写字母相互转换
temp=s[i]
if not "0"<=temp<="9":
if "A"<=temp<="Z"
temp=temp.lower()
#将字符串中大写字母转换为小写字母else:
else:
temp=temp.upper()
#将字符串中小写字母转换为大写字母
s=
return s
def dx(s): #将字符串倒序输出
return s[::-1]
miw=input("请输入密文:")
t=int(input("t="))
miw=hw(miw)
mingw=
print(mingw)
(3)程序加框处代码有错,请改正
32.设计程序,输入一个字符串,编程将字符串中的字符依次输出,最后计算输出此字符串的长度。
zfc =① ("请输入一个字符串:")
count = 0
for i in ② :
count +=③
print(i)
print("您输入的字符串长度是:",count)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查Python基础。
xq%7的值范围是[0,6],该范围与实际值有偏差,需调整为(xq-1)%7+1。求前一天变量,xq需要减1,即(xq-2)%7+1,因为xq-2可能会出现负值,不利于结果处理,而增加7的整数倍不会影响结果,因此为(xq-2+7)%7+1。故正确答案为:选项D。
2.B
【详解】本题考查计算机解决问题相关内容。解决问题的步骤:分析问题→设计算法→编写程序→运行程序验证结果。写出“韩信点兵”问题的求解步骤属于设计算法,故本题答案是B选项。
3.A
【详解】本题考查Python基础。
3的平方为9,5取余9为5,3-5=-2,-2的绝对值为2,2//2=1。故正确答案为:选项A。
4.B
【详解】本题考查Python基础。
选项A中,5%13//9的结果为0。故2**2+5%13//9的结果是4。选项B中,3*7//2结果为10减去8的结果是2。选项C的结果是字符的长度,为8。选项D的结果为-5的绝对值是5。最小的是2。故正确答案为:选项B。
5.B
【详解】本题考查程序分析。
初始化:s=0,i=1。变量s累加3的倍数,先累加,变量i后加1。当s>15时,退出循环。当s=3+6+9=18,此时i=4,故退出循环。故正确答案为:选项B。
6.B
【详解】本题考查计算机的应用。气象台的计算机将收集到的数据进行处理和运算,主要体现了计算机在科学计算方面的应用。故选B。
7.D
【详解】本题考查Python程序。程序中的关键点是对输入值进行立方运算,然后输出结果。根据题目的设定,如果输入的值是2,那么程序执行的具体步骤如下:用户输入一个整数,假设输入为2。 程序将输入的值2进行立方运算:23=8。最后输出结果,即打印变量a的值,结果为8。故答案为:D。
8.D
【详解】本题考查程序分析。该程序是个排序程序,当a[i]<0时候,停止排序。故不可能排列全部元素。排除选项A、B。方框里的语句执行了5次,故选项C错误。故选择D。
9.A
【详解】本题考查Python运算符与表达式相关内容。已知x=20,y=21,x>=y-1成立、 (x+1)!=y不成立,or表示只有一个表达式成立则结果为真,选项A结果为True;not (x<=y)表示不是20小于等于21,选项B结果为False;and表示左右两边的表达式都成立结果才为真,x<y-1不成立,选项C结果为False; x! =y-1不成立,选项D结果为False。故选:A。
10.D
【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程如图所示:
故本题答案是D选项。
11.C
【详解】本题考查Python运算符相关内容。“**”为算术运算符中的乘方运算;“%”为算术运算符中的取余运算;“/”为算术运算符中的除法运算;“!=”为关系运算符中的不等于运算。故本题答案是C选项。
12.A
【详解】本题考查链表。(1)如果第一个链表为空,则直接返回第二个链表,故选⑥。(2)如果第二个链表不为空且第一个链表的值大于第二个链表的值,则交换两个链表,使得较小的值在前。故选①。(3)在递归合并两个链表时,将当前较小值的节点作为合并结果的头节点。故选⑧。(4)递归地合并剩余的链表部分。故选④。(5)如果链表数组为空,则返回None。故选⑥。故答案为:A。
13.B
【详解】本题主要考查Python程序的执行。3>1则执行x=3*4=12,再执行x=x/2=12/2=6。故本题应选B。
14.B
【详解】本题主要考查条件语句。if语句属于分支语句 ,for、while属于循环结构,故本题选B选项。
15.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(6)生成序列数:0,1,2,3,4,5。故本题应选C。
16.D
【详解】本题考查Python递归函数相关内容。当num<n时,返回:s[num],否则返回:trans(num//n,n)+s[num%n]。执行a=trans(394,16),过程为:trans(394,16)-->trans(24,16)+s[10]-->trans(1,16)+s[8]+s[10]-->s[1]+s[8]+s[10],结束递归。最终输出结果为“18A”。故本题答案是D选项。
17.C
【详解】本题考查的是Python选择语句。选项A在x为偶数y="old",与题干给的程序不符;选项B语句格式不对,else后不用写条件表达式;选项Dx为偶数y="old",奇数y="even",与题干给的程序不符。故本题应选C。
18.C
【详解】本题主要考查Python多分支结构的应用。s=23,满足第三个分支判断条件s<25,输出结果为:差不多,故本题选C选项。
19.range()
【详解】本题考查Python函数。在Python中,range()函数可以快速生成一个特定范围内的数列。通过指定起始值、终止值和步长等参数,range()函数能够灵活地创建符合需求的数字序列。例如,range(5)会生成包含0到4的数列;故答案为:range()。
20.3344 77
【详解】本题考查Python基础。input函数接收字符型数据,故a+b的结果是拼接字符串。如果数值型相加,故先转换成整型数据。键盘依次输入33和44,故结果为3344和77。
21.9
【详解】本题考查Python函数。range()函数用于生成一个整数序列,但生成的序列不包含上限值。具体来说,range(10)会生成从0到9的整数序列,即包含起始值0但不包含上限值10。因此,range(10)会生成从0到9的序列。故答案为:9。
22.41
【详解】本题考查Python表达式的运算。//是整除运算符,因此125//3=41。
23.30
【详解】本题考查的是Python循环语句。sum=0,变量i的范围是1~10,如果是偶数,则执行sum=sum+i,故程序执行完,sum=sum+i=0+2+4+6+8+10=30。
24. 1 v = float(input("请输入速度(千米/秒):")) 4
else:
【详解】本题考查分支语句。
(1)第1行,改正后的语句:v = float(input("请输入速度(千米/秒):")。input 函数返回的值是字符串,但你希望将输入的速度转化为浮点数以便与 7.91 进行比较。因此,需要使用 float() 函数将输入的字符串转换为浮点数。故答案为:1、v = float(input("请输入速度(千米/秒):")。
(2)第4行,改正后的语句:else:。在 Python 中,条件语句中的else后面要接冒号。故答案为:4、else:。
25.正确
【详解】本题考查Python基础。
在Python中,当你执行 y = x 这样的语句时,你实际上并没有创建 x 的一个新副本,而是让变量 y 指向了 x 指向的同一个对象。这意味着 x 和 y 都引用了内存中的同一个列表对象,即内存地址相等,故表达式id(x) == id(y)的值为True。故正确。
26.正确
【详解】本题考查Python基础。
在Python 3中,使用内置函数input()接收用户输入时,不论用户输入什么格式的内容(包括数字、字符、特殊符号等),该函数一律将输入内容作为字符串(str)返回。故正确。
27.正确
【详解】本题考查Python基础。
range函数参数为10,则生成0到9的序列,执行10次赋值给变量i,并累加i到s。故正确。
28.正确
【详解】本题考查Python基础。
a=5,b=8,a<b返回逻辑真。故输出True。故正确。
29.错误
【详解】本题考查利用编程解决问题的步骤相关内容。利用编程解决问题的一般过程为:分析问题、设计算法、编写程序、调试运行,故本题答案是:错误。
30.错误
【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。
31. I6cb3F chr((ord(ch)-ord("A")- k+26)%26+ord("A")) s[:i]+temp+s[i+1:] dx(yw(miw,t)或yw(dx(miw),t) for i in range(len(s))
【详解】本题考查程序分析。(1)①若明文为:b9XY2e,t=4。先倒序为e2YX9b。字母大小写转换为:E2yx9B。字母向后移动4位。最后结果为:I6cb3F。(2)②揭秘算法向前移动k位,if语句对大写字母解码,先将密文字符转换成ASCII码与字符A的ASCII码作减法运算,算出与A的偏移量,然后减去k,目的向前移动k位,然后加上26取余数26,原因是26个字母要循环移位,算出与字符A的偏移,加上A的ASCII码,转换成字符。故填写chr((ord(ch)-ord("A")- k+26)%26+ord("A"))。③hw函数需要累加转换后的字符,故可以对索引位置i上的字符切片,每次空出i位置。故填写s[:i]+temp+s[i+1:]。④调用移位函数,然后调用倒序输出函数或先调用倒序输出然后移位,得到明文。故填写dx(yw(miw,t)或yw(dx(miw),t)。(3)⑤程序中i是切片索引号,故需要取出字符s的长度,range函数生成索引。故填写for i in range(len(s))。
32. input zfc 1
【详解】本题考查Python程序设计相关内容。分析题目内容及程序段,可知:①处,通过输入函数输入一个字符串,赋值给zfc,完成后续操作,故此处应填写:input。②③处,利用for循环读取字符串内容并统计字符个数:每读入一个,计数一个,故②处应填写:zfc。③处应填写:1。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$