内容正文:
3.2 Python语言程序设计
一、选择题
1.超市进行促销活动,若单笔消费满 200 元打九折,单笔消费满 300 元打八折(单笔消费仅享受一次打折优惠)。设顾客单笔消费 s 元,下列 Python程序能正确描述超市活动的是( )
A.
if s>=300:
s=s*0.8
else:
s=s*0.9
B.
if s>=300:
s=s*0.8
if s>=200:
s=s*0.9
C.
if s>=300:
s=s*0.8
elif s>=200:
s=s*0.9
D.
if s>=200:
s=s*0.9
elif s>=300:
s=s*0.8
A.A B.B C.C D.D
2.判断整数x是否奇偶的部分Python程序段如下:
if x % 2 == 0:
res = ″偶数″
else:
res = ″奇数″
下列选项中与上述语句块功能相同的是( )
A.
if x % 2 == 0:
res = ″偶数″
res = ″奇数″
B.
if x % 2 == 0:
res = ″偶数″
else x % 2 ! = 0:
res = ″奇数″
C.
res = ″奇数″
if x % 2 == 0:
res = ″偶数″
D.
if x % 2 == 0:
res = ″奇数″
if x % 2 ! = 0:
res = ″偶数″
A.A B.B C.C D.D
3.小东学习了Python程序设计后,编写了计算话费充值优惠的程序如下所示。用户输入充值金额,程序会计算并输出优惠后需要支付的金额。当用户输入充值金额53时,输出结果是( )
1 cz=float(input("请输入充值金额(元):"))
2 if cz<=38:
3 zf=cz
4 elif cz<=50:
5 zf=cz-3
6 elif cz<=100:
6 zf=cz-6
7 else:
8 zf=cz*0.9
9 print(zf)
A.47.0 B.50.0 C.55.0 D.53.0
4.下列Python程序,运行的结果是( )
a=1
if(a==4) or (a<6):
print("你好!",a)
else:
print("退出!")
A.你好! B.退出 C.你好!1 D.你好!6
5.有如下python 程序段:
s = "1010/1100/1111"
ans,t = 0,0
for i in s:
if "0" <= i <= "1":
t = t * 2 + int(i)
else:
ans += t
t = 0
print(ans)
运行该程序段,输出结果是( )
A.12 B.15 C.22 D.37
6.定义如下函数:
def f(k):
if k<=3:
print(k)
return
for i in range(1,4):
f(k-i)
return
执行语句f(6),则f(3)被调用的次数为( )
A.1次 B.2次 C.3次 D.4次
7.有如下Python程序段:
from random import randint
s=[60,40,70,20,10,50]
m=randint(1,3)*2
for i in range(6, m,-1):
for j in range(5,i,-1):
if s[j-1]>s[j]:
t=s[j]
s[j]=s[j-1]
s[j-1]=t
print(s)
该程序段执行后,输出的结果可能是( )
A.[60,40,70,20,10,50] B.[10,60,40,70,20,50]
C.[10,20,60,40,70,50] D.[10,20,40,50,60,70]
8.有一组正整数,要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后,并保持相对顺序不变。将划线处的代码补充完整,正确的是( )
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]
9.以下分支结构描述不正确的是( )
A.分支结构分为单分支结构、双分支结构和多分支结构
B.if-else语句结构中依然可以嵌套if-else结构
C.多分支结构可以连用多个else语句来实现
D.通过判断if条件表达式的值( True或False ),决定程序执行的分支
10.哥德巴赫猜想提出:任一大于2的偶数都可表示成两个质数之和。小余想通过Python程序来验证这一猜想,输入一个大于2的偶数,输出一个满足猜想的表达式。程序代码如下:
import math
def isprime(x):
for i in range(2,int(math.sqrt(x))+1):
if_ ① :
return False
return True
n=int(input(“请输入一个大于2的偶数:”))
for p in range(2,n-1):
q=n-p
if ② :
print(n,"=",p,"+",q)
break
下列选项中能实现该代码程序功能的是()
A.①x % i !=0 ②isprime(p) and isprime(q)
B.①x % i !=0 ②isprime(p) or isprime(q)
C.①x % i==0 ②isprime(p) and isprime(q)
D.①x % i ==0 ②isprime(p) or isprime(q)
11.a=[3,7,2,5,4,6,9,1]
m=abs(a[0]-a[1])
for i in range(2,len(a)):
if abs(a[i]-a[i-1])>m:
m=abs(a[i]-a[i-1])
则程序执行后,m的值是( )
A.4 B.5 C.7 D.8
12.有如下 Python 程序段:
s=0
for k in range(3,1,-1):
if k <= 1 :
x = 1
if k <= 2 :
x = 2
if k <= 3 :
x = 3
s = s + x
print(s)
执行该程序段后,输出显示的内容是( )
A.9 B.8 C.6 D.3
13.在Python中,表达式a**3+b**3+c**3==100*a+10*b+c属于( )
A.算术表达式 B.关系表达式 C.逻辑表达式 D.日期表达式
14.已知闰年的判断条件是:年份能被4整除但不能被100整除,或者能被400整除。下列VB表达式中,能判断某年份(year)是否是闰年的是( )
A.year Mod 4 <> 0 And year Mod 100 = 0 Or year Mod 400 = 0
B.year Mod 4 = 0 And year Mod 100 <> 0 Or year Mod 400 = 0
C.year Mod 4 = 0 And year Mod 100 <> 0 Or year\400 = 0
D.year \ 4 = 0 And year \ 100 <> 0 Or year \ 400 = 0
15.以下语句格式正确的是( )。
A.if age < 18;
B.if age < 18:
C.if age < 18。
D.if age < 18.
16.函数如下
def chanageInt(number2):
number2 = number2+1
print("changeInt: number2= ",number2)
#调用
number1 = 2
chanageInt(number1)
print("number:",number1)
打印结果哪项是正确的( )
A.changeInt: number2= 3 number: 3
B.changeInt: number2= 3 number: 2
C.number: 2 changeInt: number2= 2
D.number: 2 changeInt: number2= 3
二、填空题
17.Python表达式125%100的运算结果是( )
18.阅读如下一段程序,回答以下问题。
x=20
if x>=10:
value=4*x
else:
value=5*x
print(value)
该程序采用 结构,程序输出结果是
19.某Python程序段如下:
def isdigit(x):
if "0" <= x <= "9":
return True
else:
return False
d = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s = "1*8%6$3@0#19&0"
ans = ""
t = 0
for i in s:
if isdigit(i):
t = t * 10 + int(i)
else:
ans += d[t]
t = 0
print(ans)
运行该程序段,输出结果是
20.在解决问题的过程中,常常需要对事物进行判断和选择,Python中使用if语句实现程序的分支选择,当分支比较多时可以用if … …else语句来实现。
21.有10个数据34,22,101,8,14,88,24,17,54,7依次存放在列表list中,有如下Python程序,当程序运行结束时,输出的值是:
list= [34,22, 101,8,14,88,24,17,54,7]
num=list[0]
for i in range(1,10):
if list[i]<num:
num=list[i]
print(num)
22.有如下Python程序段:
d=[13,9,21,29,36,18,23,20,25,6,8]
n=len(d)
key=int(input("please input key:"))
ans=max(d)
posi=i=0
while i<=n-1:
if abs(d[i]-key)<=ans:
ans=abs(d[i]-key)
posi=i
i=i+1
print(ans","posi)
程序运行时,输入key的值为25,输出结果为
23.阅读下列程序,写出运行结果。
sum = 0
data = [34,5,9,41,78,2]
for i in data :
if i % 2 == 0:
sum = sum + iprint(sum)
运行结果是:
24.阅读下列程序,写出运行结果
警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0)
persons=[’甲’,’乙’,’丙’,’丁’]
for thief in persons:
flag =(thief!=’甲’)+(thief==’丙’)+(thief ==’丁’)+(thief!=’丁’)
if flag == 3:
print(thief)
运行结果是:
三、判断题
25.顺序结构和分支结构的程序中每一条语句都会被执行,且只执行一次。( )
26.在 Python语言环境下,For循环语句中的循环体在书写时需要缩进,且必须缩进四个空格。 ( )
27.Python语言用if语句实现选择结构,它包括以下三种基本形式:单分支语句、双分支语句、多分支语句。( )
四、操作题
28.某地居民生活用水实行阶梯式水价方案,阶梯式水价计量分为三级:第一级为每户每月20立方米及以下的用水量按2.75元/立方米计价;第二级为每户每月21至30立方米的用水量按3.65元/立方米计价;第三级为每户每月31立方米及以上的用水量按4.55元/立方米计价。根据用水量w(立方米)计算水价s(元)的Python程序如下:
w=float(input("请输入当月居民的用水量:"))
if w<=20:
s=2.75*w
elif ① :
s=2.75*20+(w-20)*3.65
else:
s=②
print("水价为:",s,"元。")
(1)若某户家庭当月的用水量为24立方米,则该家庭需要缴纳的水费为 元。
(2)请在划线处填入合适的代码。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查的是分支语句。选项A,遗漏了200数据的判断;选项B,300元以上的也被错判为九折;选项D,300元以上的也被错判为九折。故选C。
2.C
【详解】本题考查的是Python选择语句。选项A在x为偶数y="奇数",与题干给的程序不符;选项B语句格式不对,else后不用写条件表达式;选项Dx为偶数y="奇数",奇数y="偶数",与题干给的程序不符。故本题应选C。
3.A
【详解】本题考查的是Python多分支语句。输入充值金额53时,不满足 cz<=38,不满足cz<=50,满足cz<=100,执行zf=cz-6=53-6=47。故本题应选A。
4.C
【详解】本题考查的是Python选择语句。a=1,满足(a==4)or(a<6)条件,故执行print("你好!",a),运行的结果是你好!1。选项C正确。
【点睛】
5.C
【详解】本题考查Python程序。这段 Python 程序的目标是将给定的字符串 s 中的二进制数值转换为十进制并将它们相加。让我们逐步分析程序:s = "1010/1100/1111" 定义了一个包含多个二进制数的字符串。ans,t = 0,0 初始化两个变量 ans 和 t,它们分别用于存储累加的结果和当前正在处理的二进制数。for i in s: 开始遍历字符串 s 中的每个字符。if "0" <= i <= "1": 检查当前字符是否是 '0' 或 '1'。如果是,执行 t = t * 2 + int(i) 将当前字符转换为整数并加到 t 上,模拟二进制数值的累积。如果不是,执行 ans += t 将累积的二进制数值添加到 ans 上,并将 t 重置为 0,以开始处理下一个二进制数。最后,程序输出 ans 的值。现在让我们按照程序的逻辑来计算结果:第一个二进制数是 "1010",其十进制值为 10。第二个二进制数是 "1100",其十进制值为 12。第三个二进制数是 "1111",其十进制值为 15,但最后并无/使其进入else分支,因此最后的结果为前两个数相加:10 + 12 = 22。故答案为:C。
6.D
【详解】本题主要考查Python程序调试。分析程序,在f(6)中for循环中会执行f(5)、f(4)、f(3);而在f(5)中for循环中又会执行f(4)、f(3)、f(2);而在f(4)中for循环中又会执行f(3)、f(2)、f(1),因为有两个f(4),因此f(3)被调用的次数为1+1+2=4次,故本题选D选项。
7.A
【详解】本题主要考查Python程序的执行与调试。m=randint(1,3)*2,m随机生成2、4、6,当m=2时,a[3]~a[5]成升序状态,s=[60,40,70,10,20,50];当m=4时,a[4]~a[5]成升序状态,s=[60,40,70,20,10,50];当m=6时,s不变,故输出的结果可能是[60,40,70,20,10,50],故本题选A选项。
8.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选项。
9.C
【详解】本题主要考查分支结构描述。分支结构分为单分支结构、双分支结构和多分支结构;if-else语句结构中依然可以嵌套if-else结构;多分支结构格式是if....else if....else语句;通过判断if条件表达式的值( True或False ),决定程序执行的分支,故本题选C选项。
10.C
【详解】本题主要考查Python程序的综合应用。isprime(x)用来判断x是否为质数,如果x除以i的余数为0,则返回False,说明x不是质数,故①处填x % i==0。哥德巴赫猜想提出:任一大于2的偶数都可表示成两个质数之和,即p和q同时为质数,需要用逻辑连接词and连接,故②处填isprime(p) and isprime(q),故本题选C选项。
11.D
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现求列表a中相邻两个元素差值绝对值的最大值,将其赋给变量m,最大值m=abs(a[7]-a[6])=8,故本题选D选项。
12.C
【详解】本题主要考查Python程序的执行。由代码可知,变量k的可取值分别是3、2。当k=3时,x=3,s=s+x=0+3=3;当k=2时,分别满足k<=2和k<=3,x=3,s=s+x=3+3=6,故执行该程序段后,输出显示的内容是6,故本题选C选项。
13.B
【详解】本题主要考查Python表达式的运算。“==”是关系运算符,用于判断左右两边的表达式值是否相等,故该表达式是关系表达式,故本题选B选项。
14.B
【详解】本题主要考查VB条件判断。年份能被4整除但不能被100整除(可使用逻辑运算符and连接),表示为year Mod 4 = 0 And year Mod 100 <>0,或者能被400整除(使用逻辑运算符Or连接),表示为Or year Mod 400 = 0,故能判断某年份(year)是否是闰年的是year Mod 4 = 0 And year Mod 100 <>0 Or year Mod 400 = 0,故本题选B选项。
15.B
【详解】本题主要考查if条件表达式。if(条件表达式)后面加冒号“:”,故本题选B选项。
16.B
【详解】本题考查Python相关知识。chanageInt(number1)将number1代入自定义函数chanageInt中,因为number1=2,所以函数中number2=3。打印函数print("changeInt: number2= ",number2),得到changeInt: number2=3,number1的值没变,所以本题选B。
17.25
【详解】本题考查Python运算符与表达式。在Python中,%代表求模运算,因此表达式125%100的运算结果是25。
18. 分支 80
【详解】本题主要考查Python分支结构的应用。①分析程序可知,该程序采用分支结构。②当输入x=20时,满足if条件,执行value=4*x=80,故输出结果是80。
19.BIGDAT
【详解】本题主要考查Python程序的执行。分析程序可知,依次从s中取出数字,将该数字作为索引从字符串d中取出对应的字母,s中的数字依次是1、8、6、3、0、19、0,因为最后一个数字0后面再无其他字符,故不会执行ans += d[t],对应d中的字符分别是B、I、G、D、A、T,故输出结果是BIGDAT。
20.elif
【详解】本题主要考查Python分支结构。在解决问题的过程中,常常需要对事物进行判断和选择,Python中使用if语句实现程序的分支选择,当分支比较多时可以用if …elif…else语句来实现。
21.7
【详解】本题主要考查Python程序的执行。分析程序可知,该程序求列表list的最小值,将其保存到变量num中,故输出的值是:7。
22.0 , 8
【详解】本题主要考查Python程序的执行。n=len(d)=11,key=25,ans=max(d)=36,分析程序可知,变量ans保存key与列表d中元素差值的最小值,变量posi保存该元素的索引下标。列表d中索引i=8时,d[8]=25,此时ans=d[8]-key=0,故输出结果为0,8。
23.114
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将列表data中的偶数进行求和,故sum=0+34+78+2=114,故运行结果是114。
24.丙
【详解】本题主要考查 Python程序执行。分析程序可知,只有当thief=’丙‘时,满足flag=3,即4个人中只有一人说了假话,故运行结果是丙。
25.错误
【详解】本题主要考查算法控制结构。顺序结构的程序中,每一条语句都会被执行,且只执行一次。分支结构的程序中,有些语句可能不会被执行,故表述错误。
26.错误
【详解】本题考查的是Python中的for语句格式。在 Python语言环境下,For循环语句中的循环体在书写时需要缩进,但不是必须缩进四个空格。故题干中的说法错误。
27.正确
【详解】本题主要考查Python条件分支结构。Python语言用if语句实现选择结构,它包括以下三种基本形式:单分支语句、双分支语句、多分支语句,表述正确。
28. 69.6 w<=30 2.75*20+3.65*10+(w-30)*4.55或91.5+(w-30)*4.55
【详解】本题考查的是Python选择语句应用。
(1)若某户家庭当月的用水量为24立方米,依据阶梯式水价计量:第一级为每户每月20立方米及以下的用水量按2.75元/立方米计价;第二级为每户每月21至30立方米的用水量按3.65元/立方米计价,故该家庭需要缴纳的水费为:20*2.75+(24-20)*3.65=69.6元。
(2)①处,由s=2.75*20+(w-20)*3.65可知,此处是第二级计价,故此处应为:w<=30;②处,第三级为每户每月31立方米及以上的用水量按4.55元/立方米计价,故此处应为:2.75*20+3.65*10+(w-30)*4.55或91.5+(w-30)*4.55。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$