内容正文:
3.2 Python语言程序设计
一、选择题
1.python程序中“def cal():”这条语句的作用是( )
A.定义一个自定义类 B.定义一个元组变量 C.定义一个自定义函数 D.定义一个符号常量
2.已知x=4.5/9+10%3,执行print(x)语句后输出的结果是( )
A.1 B.1.0 C.1.5 D.3.5
3.用Python表达式表示数轴上x的取值范围,以下书写正确的是( )
A.x> =5 or x <8 and x=9 B.x > =5 and x < 8 or x ==9
C.x> =5 and x <8 and x ==9 D.x >=5 or x < 8 or x <9
4.表达式3+2>5 or 0==False的运行结果是( )
A.True B.1 C.5 D.False
5.在 Python 中,执行如下语句段后,输出的结果是( )
a,b,c=0,1,2
if b>c:
a=c-b
print (a)
A.1 B.2 C.0 D.3
6.以下运算优先级从高到低,排列正确的是( )
A.算术运算符>关系运算符>逻辑运算符 B.逻辑运算符>关系运算符>算术运算符
C.关系运算符>算术运算符>逻辑运算符 D.算术运算符>逻辑运算符>关系运算符
7.如果一个数从左到右和从右到左看都是一样的,称这个数为回文数。例如:12321。若将任意1个三位正整数存储到变量num 中,下列语句执行后变量new 的值是回文数的是( )
A. B.
C. D.
8.有如下Python程序段:
n=int(input(“请输入:”))
s = x = 0
while n != 0:
x = n % 10
s = x + s
n = n //10
print(s)
执行该程序段后,依据程序提示,输入“20220412”,则程序输出结果是( )
A.13 B.1119 C.2022 D.9
9.有一组正整数,要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后,并保持相对顺序不变。将划线处的代码补充完整,正确的是( )
a=[5,10,21,7,24,14,9,11,36,37]
n=len(a) ;b=[0]*n
num=0;k=0
while k <10:
if ① :
b[num]=a[k]
num+=1
else:
②
k+=1
for j in range(n-num,n):
③
print(a)
A.①a[k]%2==1 ②a[k-num]=a[k] ③a[j]=b[j-n+num]
B.①a[k]%2==0 ②b[k-num]=a[k] ③a[j]=b[j+num]
C.①a[k]%2==0 ②a[k-num]=a[k] ③a[j]=b[j+num]
D.①a[k]%2==1 ②b[k-num]=a[k] ③a[j]=b[j-n+num]
10.有如下Python程序段:
执行该程序段,输入“541-*6+”后,输出的是( )
A.-9 B.6 C.21 D.23
11.文件st.xlsx第一张Excel工作表存放了学生信息,单元格A1、B1、C1的值分别为“姓名”、“性别”、“出生年龄”,部分程序代码如下:
import pandas as pd
s1=pd.read_excel(″st.xlsx″)
s1.insert(0,column='班级',value='-(1)')
s2=s1.sort_values('出生年龄')
执行该程序代码后,下列说法错误的是( )
A.对象s1中对象一定是按“出生年龄”升序排列 B.除索引列外,对象s1有4列数据
C.对象s2中,每一行的班级列的值均为'-(1)' D.对象s1中,索引列的值是升序排列的
12.定义如下函数:
def fun(x,y):
if x<0:
return y
else:
return fun(x-2*y-1,y-1)
执行语句s=fun(13,3)后,s的值为( )
A.0 B.1 C.2 D.3
13.有如下Python程序段:
import random
s=[3,2,7,6,9] ; st=[0]*len(s) ; top=-1 ; i=0
while i<len(s):
op=random.randint(0,1)
if top==-1 or op==0 and s[i]>st[top]:
top+=1 ; st[top]=s[i]
elif top>=1 and op==1 and s[i]>st[top-1]:
st[top]=s[i]
i+=1
while top!=-1:
print(st[top],end=" ")
top-=1
执行该程序段后,输出的结果不可能是( )
A.3 B.9 6 2 C.9 6 3 D.9 7 3
14.有如下 Python 程序段:
a = [0] * 6
b = [76, 88, 84, 91, 99, 80]
for i in range(6):
for j in range(i + 1, 6):
if b[j] > b[i]:
a[i] += 1
else:
a[j] += 1
print(a)
该程序段运行后,列表 a 的值为 ( )
A.[5, 2, 3, 1, 0, 4] B.[0, 3, 2, 4, 5, 1]
C.[10, 6, 4, 8, 12, 2] D.[6, 3, 4, 2, 1, 5]
15.有如下 Python 程序段:
D={"a":[ 1,2,3,4], "b":[2,3,4,5], "c":[4,3,2,3], "d":[ 1, 1, 1,2]}
S=[0]*4
for i in range(4):
for j in D:
S[i]+=D[j][i]
print(S)
运行该程序,输出结果为 ( )
A.[10,14,12,5] B.[8,7,8,10] C.[8,8,10,9] D.[8,9,10,14]
16.有如下Python程序段:
import random
n = 8
a = [random,randint(0,9)for i in range(n)]
for t in range(2):
i=t+1
while i < n-1:
if t % 2 == 0:
if a[i-1] < a[i] and a[i] > a[i+1]:
i += 2
else:
a[i] += random. randint(0,9)
else:
if a[i-1] >a[i] and a[i] < a[i+1]:
i += 2
else:
a[i]-=random. randint(0,9)
运行后,数组 a 中的值可能是( )
A.[8,8,3,5,4,7,3,5] B.[5,11,10,18,8,9,0,2]
C.[1,2,1,4,0,10,-1,7] D.[7,12,5,17,9,19,-10,8]
二、填空题
17.本程序要求完成的功能是:计算1+3+5+…+999请改正程序里的一处错误。程序源代码如下:
s=0 'A
i=1 'B
while i<=999: 'C
if i % 2==1: 'D
s=s+i 'E
i=i+1 'F
print(s) 'G
(1)错误语句的编号是 (2)修改措施
18.现有一程序模拟竞猜某商品价格,总共有五次竞猜机会。根据程序功能,请在划线处填入合适的代码。
import random
a=random.randint (0, 100)
chance=5
print("共%d次机会"% (chance))
for i in
b=int (input("请输入一个整数: "))
if a < b:
print("大啦!!!还剩%d次机会"% (chance-i))
elif a > b:
print("小啦!!!还剩%d次机会"% (chance-i))
else:
print("恭喜您,答对啦!!!数字是%d,共用次数%d"%(a, i))
Break
19.学校决定对学生的就餐卡消费进行管理和预警,具体措施如下:如果一周内的消费总额达到或超过210元,则给出预警提示“您的本周消费已达上限”,并且限制本周内单次消费额度不超过10元,否则允许正常消费。假设每周消费按21次计算,模拟解决问题的算法步骤如下
(1 )输入单次消费金额money ;
(2)如果消费总额total>210元,并且单次消费money> 10元,则输出“您本周消费已达上限,单次消费不能超过10元”,然后重新输入单次消费金额money ;
(3)将单次消费金额累加到消费总额total。
根据以上算法分析,补全以下程序代码:
请补全程序:
20.调用 函数,将返回一个窗口。如果想在窗口上绘制或是放置对象,需要指定这个对象在窗口的 即坐标。pygame中的坐标系原点在 ,水平方向为 轴,垂直方向为 轴。
21.Python中读写文本文件的方法,其中打开用 把外存储器里的文本文件(.txt)打开;存储用 将内存中的数据存储到外存储器的文件中;关闭文件时一定要用 关闭文件。
三、判断题
22.a=b=c=1,叫多元赋值。( )
23.已知A和B是两个集合,并且表达式A<B的值为False,那么表达式A>B的值一定为True。( )
24.计算机程序能重复使用。( )
25.用户自定义函数通过return语句只能返回一个数值。( )
四、操作题
26.在机器打印发票过程中,只需输入数量与单价后,就自动计算金额并输出对应的大写金额(只限整数。不超过12位)现在请你结合左侧流程图,元成Python语句①②③的填写,实现这个功能。
import sys
d=“零壹贰叁肆伍陆柒捌玖”
w=“元拾佰仟万拾佰仟亿拾佰仟”
dj=int(input(”诸输入单价:"))
num=int(inpul("请输入数量:"))
s= ①
if ②
print("金额过大”)
sys exit() #退出
c=""
for i in rangc(len(s)):
c=c+d [ ③ ]+w{len(s)-i-1]
c=c+"整"
print(c)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Python基础。在Python中,def 是定义函数的关键字,故正确答案为:选项C。
2.C
【详解】本题主要考查Python表达式的运算。x=4.5/9+10%3=0.5+1=1.5,故本题选C选项。
3.B
【详解】本题考查Python运算符与表达式相关内容。由图中可知x的取值是[5,8)和9。结合关系、逻辑运算符,其表达式为:x>=5 and x< 8 or x == 9。故本题答案是B选项。
4.A
【详解】本题主要考查Python表达式的运算。逻辑运算符or两边值均为假时值才为假,否则值为真。3+5>2值为False,0==False值为True,故表达式表达式3+2>5 or 0==False的运行结果是True,故本题选A选项。
5.C
【详解】本题考查Python分支结构的应用。a=0,b=1,c=2,不满足if判断条件,因此输出a的值是0。故选C。
6.A
【详解】本题考查Python运算符优先级相关内容。算术运算符>关系运算符>赋值运算符>逻辑运算符。故选A。
7.D
【详解】本题主要考查Python语句。若将任意1个三位正整数存储到变量num 中,则个位gw=num%10,十位sw=num//10%10,百位bw=num//100,则num倒着表示是new=gw*100+sw*10+bw,只需比较num与new是否相等,故本题选D选项。
8.A
【详解】本题主要考查Python程序循环结构。分析程序可知,该程序实现将输入的数n各个位上的数进行累加求和,输入“20220412”,则程序输出结果是2+0+2+2+0+4+1+2=13,故本题选A选项。
9.A
【详解】本题主要考查Python程序的综合应用。要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后。该算法的思想是将偶数保存到列表a中,奇数保存到列表b中,最后再将列表b中的奇数并到列表a中偶数的后面。第一空判断a[k]是否为奇数,即a[k]%2==1。第二空如果a[k]是偶数则保存到列表a前面,即a[k-num]=a[k]。最后再把列表b并到列表a存放到偶数的后面,即a[j]=b[j-n+num],故本题选A选项。
10.C
【详解】本题考查的知识点是Python程序设计综合应用。根据给定输入的字符串“541-*6+”,变量i的值为0,1,2时,执行if语句,得到st[0]=5,st[1]=4,st[2]=1,top=2。i=3时,取到“-”号,执行st[top-1]-st[top],即st[1]-st[2]=4-1=3,并且将结果3赋值给st[top-1],即st[1]=3,top=1;i=4时,取到“*”号,执行st[top-1]*st[top],即st[1]*st[0]=3*5=15,并且将结果15赋值给st[top-1],即st[0]=15,top=0;i=5时,取到“6”,执行top+=1,此时top=1,所以st[1]=6;i=6时,取到“+”号,执行st[top-1]+st[top],即st[0]+st[1]=15+6=21,并且将结果21赋值给st[top-1],即st[0]=21,执行top-=1后,top=0;i=7时,退出循环。最后打印输出st[top],即输出st[0],此时st[0]=21。故答案为C选项。
11.A
【详解】本题考查的是pandas库相关知识。该程序的功能是读入st.xlsx中第一张工作表内容,并在索引列前增加一列班级,值均为'-(1)',将s1按出生年龄升序排列后赋值给s2,因此s1中的数据并未经过排序。
12.A
【详解】本题考查Python程序。在函数fun(x,y)中,当x<0时返回y,否则进行递归调用fun(x-2y-1,y-1)。对于fun(13,3),第一次调用:13>0,继续调用fun(13-2*3-1,3-1)即fun(6,2)。第二次调用:6>0,继续调用fun(6-2*2-1,2-1)即fun(1,1)。第三次调用:1>0,继续调用fun(1-2*1-1,1-1)即fun(-2,0)。此时-2<0,返回0。故答案为A。
13.B
【详解】本题考查Python程序。程序中采用栈结构实现了单调性问题。栈空时,元素3可直接入栈,后续元素若要入栈则需满足两个条件:其一,op==0且该元素大于栈顶元素,则执行入栈操作;其二,op==1且该元素大于栈顶下面一个元素,此时将用元素替代原先的栈顶元素。B选项中,元素2两个条件均无法符合,不可能入栈。故答案为:B。
14.A
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现用列表a统计列表b中第i个元素后面的所有元素比第i个元素值大的个数有多少,如b[0]=76,88、84、91、99、80均大于b[0],则a[0]=5,其余依次类推,该程序段运行后,列表 a 的值为[5, 2, 3, 1, 0, 4],故本题选A选项。
15.D
【详解】本题主要考查Python程序的执行。分析程序可知,S[0]=D["a"][0]+D["b"][0]+D["c"][0]+D["d"][0]=8,S[1]=D["a"][1]+D["b"][1]+D["c"][1]+D["d"][1]=9,S[2]和S[3]依此类推,分别是10和14,故运行该程序,输出结果为[8,9,10,14],故本题选D选项。
16.C
【详解】本题考查Python程序。首先,通过import random导入了random模块。然后定义了变量n并赋值为8,表示生成列表的长度。利用列表解析生成了列表a,其中包含了n个随机生成的0到9之间的整数。使用了一个外层循环,循环次数为2,控制了整体的迭代次数。在内部循环中,定义了变量i,初始值为t+1,其中t是外层循环的迭代变量。内部循环的条件是i<n-1,保证不越界。在内部循环中,根据t的奇偶性分别进行不同的操作:当t为偶数时,判断a[i-1]<a[i] and a[i]>a[i+1]是否成立,如果成立,则将i增加2,否则将a[i]的值增加一个0到9之间的随机整数。当t为奇数时,判断a[i-1]>a[i] and a[i]<a[i+1]是否成立,如果成立,则将i增加2,否则将a[i]的值减少一个0到9之间的随机整数。最后输出列表a。A选项错误,a[1]=a[0],根据上述分析,必有a[1]>a[0]。B选项错误,a[2]=10,但整个程序只对a[2]的原始值做减法,因此a[2]的值小于等于9。D选项错误,a[5]-a[4]=10,然而在执行语句a[i] += random. Randint(0,9)时,增加的最大值为9。故答案为:C。
17. F 修改i=i+1语句缩进到与if语句一个级别 或将i=i+1修改为i=i+2
【详解】本题考查程序分析。
(1)当i为2时,进入死循环。(2)第一种改法,循环变量奇数增长,改为i=i+2。第二种改法,修改i=i+1语句缩进到与if语句一个级别。
18.range(1,chance+1,1):或range(1,chance+1):或range(1,6):或range(1,6,1):
【详解】本题考查Python函数。这个程序模拟了竞猜商品价格的过程,总共有5次竞猜机会。在划线处,应该填入一个循环来表示5次竞猜的过程。可以使用range()函数来生成一个包含1到5的整数序列,然后在循环中遍历这个序列,每次表示一次竞猜机会。在 for 循环的空白处,我们需要使用 range 函数来指定循环的次数。循环的次数应该是 chance 的值,也就是五次。所以可以有多种方式来指定循环的次数,如for i in range(1, chance+1)::这使用 range 函数指定了循环的范围,从 1 到 chance(包括 1 和 chance)。故答案为:range(1,chance+1,1):或range(1,chance+1):或range(1,6):或range(1,6,1):。
19.tota1>=210 and money>10或money>10 and total>=210
【详解】本题主要考查Python程序的调试。如果消费总额total>210元,并且单次消费money> 10元,则输出“您本周消费已达上限,单次消费不能超过10元”,然后重新输入单次消费金额money 。故while循环条件是tota1>=210 and money>10 或 money>10 and total>=210。
20. pygame.display.set_mode() 具体位置 左上角 X Y
【详解】本题考查的是Python中的pygame模块。调用pygame.display.set_mode()函数,将返回一个窗口。如果想在窗口上绘制或是放置对象,需要指定这个对象在窗口的具体位置即坐标。pygame中的坐标系原点在左上角,水平方向为X轴,垂直方向为Y轴。
21. open函数 write方法 close方法
【详解】本题考查Python相关知识。Python中读写文本文件的方法,其中打开用open函数把外存储器里的文本文件(.txt)打开;存储用write方法将内存中的数据存储到外存储器的文件中;关闭文件时一定要用close方法关闭文件。
22.错误
【详解】本题考查Python赋值运算相关内容。多重赋值是指将同一个对象的应用赋值给多个变量,即多个变量同时指向该对象;多元赋值是指一个赋值语句实现了多个变量应用引用多个对象的赋值过程。a=b=c=1,属于多重赋值。故本题答案是:错误。
23.错误
【详解】本题考查Python集合数据类型的描述。已知A和B是两个集合,并且表达式A<B的值为False,那么表达式A>B的值不一定为True,也有可能A=B。故表述错误。
24.正确
【详解】本题考查计算机程序相关内容。计算机软件(程序)复用指的是在开发软件时,重复利用已有的代码和模块,以提高开发效率,并减少开发成本。故本题答案是:正确。
25.错误
【详解】本题考查的是Python的自定义函数。用户自定义函数通过return语句可以返回多个数值。故题干中的说法是错误的。
26. str(dj*num) len(s)>12 ③int(s[i])
【详解】本题主要考查Python程序的综合应用。①变量s保存金额(金额=单价*数量),由下文知s是字符类型,故此处填str(dj*num)。②当满足大写金额超过12位时,就输出金额过大,故此处判断条件是len(s)>12。③此处是自动生成大写的公式,题干要求的是整数,所有s[i]应该为取整,故填int(s[i])。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$