内容正文:
3.3 简单算法及其程序实现(分层作业)
【基础达标】
1.下列Python语句能实现“若a大于0则b=a,否则b=-1”功能的是( )
A.
if a>0:
b=a
else:
b=-1
B.
if a>0:
b=a
if a<0:
b=-1
C.
b=-1
if a>=0
b=a
D.
if a>0:
b=a
elif:
b=-1
A.A B.B C.C D.D
2.已知m、n均为小于26的正整数,下列Python程序段中,能实现和语句n=(n+m)%26同样功能的是( )
A.if n+m>26:
n=n+m-26
else:
n=n+m
B.if n+m<26:
n=n+m
else:
n=n+m-26
C.n=n%26+m%26
D.n=n+m
if n>26:
n=n-26
A.A B.B C.C D.D
3.有如下Python程序段:
if a%b == 0:
c=a/b
else:
c=a//b
如果a,b的值分别为16,3,则执行该程序段后,变量c的值为( )
A.5.33 B.5 C.2 D.13
4.运行下列代码,输出结果是( )
while 4 == 4:
print(4,end=" ")
A.4 B.44 C.4444 D.无限次输出4,直到程序关闭
5.有如下Python程序,程序执行,输入数据k之后输出的结果不正确的是( )
A.k=8输出:[8,4] B.k=9输出:[8,9,4,9]
C.k=10输出:[8,10,9,4,9,10] D.k=13输出:[8,10,9,13,4,9,13]
6.某算法的部分流程图如图所示,输入a的值为26,若用Python语言描述,则下列正确的是()
A. B.
C. D.
【能力提升】
1.以下程序的输出结果是( )
a=1
if a>0:
a=a+1
else:
a=a-1
print(a)
A.0 B.1 C.2 D.3
2.在Python中,下列程序运行后得到的是( )
sum=0
for x in range(2,100,2):
sum=sum+x
print(sum)
A.2至100的和 B.2至99奇数的和 C.2至100偶数的和 D.2至98偶数的和
3.商场为促进消费,推出某促销活动:每满100减30,每满200减70,优惠全部可以累计,上不封顶。用Python语言实现优惠金额计算,设s为购买商品的原价,计算优惠金额t,下列选项正确的是( )
A.
t=s//200*70
if s%200>=100:
t+=s//100*30
B.
t=s//100*30
if s//200>0:
t=s//200*70
C.
t=s//100*30
if s//200>0:
t+=s//200*10
D.
if s>=100:
t=t//100*30
else:
t=t//200*70
A.A B.B C.C D.D
4.用Python语言实现“每满100减30,每满200减70,可以累计上不封顶”的优惠金额计算。设s为购买商品的原价,计算优惠金额t。下列选项正确的是( )
A.
t=s//200*70
if s%200>=100:
t=t+30
B.
t=s//100*30
if s//200>0:
t+=s//200*70
C.
if s>=200:
t=s//200*70
else:
t=s//100*30
D.
if s>=100:
t=t//100*30
else:
t=t//200*70
A.A B.B C.C D.D
【链接真题】
(2025高二·浙江·专题练习)1.小王编写了一个实现文字查找删除功能的python程序,用户分别输入原文和需要删除的字符,程序运行结束显示处理结果和删除次数。运行界面如图所示。
输入原文:我们是学生,我们的任务是学习,我们要努力!
删除字符:我们
处理结果为:是学生,的任务是学习,要努力!删除次数为:3
>>>
程序实现代码如下:
s1= input("输入原文:")
s2= input("删除字符:")
n= len(s2)
count=0
i=0
result=""
while i < len(s1):
s=①
if ② :
count+=1
i=i+n
else:
result+= s1[i]
③
print("处理结果为:"+ str(result)+"删除次数为:"+ ④ )
请在画线处填上合适的代码。
(20-21高二·浙江绍兴·期中)2.根据输入的18位身份证,输出身份证中包含的出生日期信息。
sfz = input("请输入您的身份证号码(18位):")
if _____①_______:
print("您的身份证号码长度不对!")
else:
year = int(sfz[6:10])
_______②__________
day = int(sfz[12:14])
print("你的出生于",year,"年",month,"月",day,"日。")
请完善程序代码(1) ;(2) 。
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
3.3 简单算法及其程序实现(分层作业)
【基础达标】
1.下列Python语句能实现“若a大于0则b=a,否则b=-1”功能的是( )
A.
if a>0:
b=a
else:
b=-1
B.
if a>0:
b=a
if a<0:
b=-1
C.
b=-1
if a>=0
b=a
D.
if a>0:
b=a
elif:
b=-1
A.A B.B C.C D.D
答案:A
解析:本题考查的是Python选择语句。题目要求 “若 a 大于 0 则 b = a,否则 b = -1”,A 选项用 if-else 结构,if a > 0 时 b = a ,否则 b = -1 ,符合逻辑;B 选项 if a > 0 后执行 b = a ,接着 if a < 0 执行 b = -1 ,但未处理 a = 0 情况,逻辑不全;C 选项先 b = -1 ,再 if a >= 0 执行 b = a ,这与题目 “a 大于 0 时 b = a,否则 b = -1” 逻辑相悖(此逻辑会让 a = 0 时 b = 0 ,不符合题目 要求);D 选项elif 后缺少条件(如 elif a <= 0:)。所以选 A 。
2.已知m、n均为小于26的正整数,下列Python程序段中,能实现和语句n=(n+m)%26同样功能的是( )
A.if n+m>26:
n=n+m-26
else:
n=n+m
B.if n+m<26:
n=n+m
else:
n=n+m-26
C.n=n%26+m%26
D.n=n+m
if n>26:
n=n-26
A.A B.B C.C D.D
答案:B
解析:本题考查的是Python分支语句。n = (n + m) % 26 的功能是,当 n + m 小于 26 时,结果为 n + m ;当 n + m 大于等于 26 时,结果为 n + m - 26 。 A 选项:当n + m=26时,结果应为 n + m-26,当该选项返回的是n+m,错误。 B 选项:若 n + m < 26 ,n = n + m ;否则 n = n + m - 26 ,与 n = (n + m) % 26 功能一致,正确。 C 选项:n = n % 26 + m % 26 是对 n 和 m 分别取余再相加,与 (n + m) % 26 逻辑不同(例如 n = 25 ,m = 25 ,(25 + 25) % 26 = 24 ,而 25%26 + 25%26 = 50 ),错误。 D 选项:先 n = n + m ,再判断 if n > 26 执行 n = n - 26 ,但未考虑 n + m 刚好是 26 等情况(26 % 26 = 0 ,此代码中 n = 26 时不会执行 n = n - 26 ,结果为 26 ,与 (n + m) % 26 结果 0 不符 ),错误。故选B。
3.有如下Python程序段:
if a%b == 0:
c=a/b
else:
c=a//b
如果a,b的值分别为16,3,则执行该程序段后,变量c的值为( )
A.5.33 B.5 C.2 D.13
答案:B
解析:本题考查的是Python选择语句。因为a,b的值分别为16,3,a%b==0条件不成立,执行c=a//b为5。故选B。
4.运行下列代码,输出结果是( )
while 4 == 4:
print(4,end=" ")
A.4 B.44 C.4444 D.无限次输出4,直到程序关闭
答案:D
解析:本题考查while语句的运行。条件表达式“4==4”结果是真,循环条件始终成立,程序将永远执行下去,称为“无限循环”。故选D。
5.有如下Python程序,程序执行,输入数据k之后输出的结果不正确的是( )
A.k=8输出:[8,4] B.k=9输出:[8,9,4,9]
C.k=10输出:[8,10,9,4,9,10] D.k=13输出:[8,10,9,13,4,9,13]
答案:C
解析:本题考查的是Python循环语句。阅读程序可知,保留列表L中不大于输入的数,并输出。k=10时,列表保留的是[8,10,9,4,9],故本题应选C。
6.某算法的部分流程图如图所示,输入a的值为26,若用Python语言描述,则下列正确的是()
A. B.
C. D.
答案:A
解析:本题考查的是流程图及Python语言。由流程图可知,循环的条件是a!=b,故排除BD,b=b-3这个语句不管a是否大于b都要执行,故排除C。本题应选A。
【能力提升】
1.以下程序的输出结果是( )
a=1
if a>0:
a=a+1
else:
a=a-1
print(a)
A.0 B.1 C.2 D.3
答案:C
解析:本题考查的是Python选择语句。a=1,满足 a>0,执行a=a+1=2,故程序的输出结果是2,选项C正确。
2.在Python中,下列程序运行后得到的是( )
sum=0
for x in range(2,100,2):
sum=sum+x
print(sum)
A.2至100的和 B.2至99奇数的和 C.2至100偶数的和 D.2至98偶数的和
答案:D
解析:本题考查的是Python循环语句。range(起始值,结束值,步长)注意:结束值不包含;步长可省略,默认为1。range(2,100,2)返回的是2至98偶数。故该程序运行后得到的是2至98偶数的和。选项D正确。
3.商场为促进消费,推出某促销活动:每满100减30,每满200减70,优惠全部可以累计,上不封顶。用Python语言实现优惠金额计算,设s为购买商品的原价,计算优惠金额t,下列选项正确的是( )
A.
t=s//200*70
if s%200>=100:
t+=s//100*30
B.
t=s//100*30
if s//200>0:
t=s//200*70
C.
t=s//100*30
if s//200>0:
t+=s//200*10
D.
if s>=100:
t=t//100*30
else:
t=t//200*70
A.A B.B C.C D.D
答案:A
解析:本题考查的是Python选择语句的应用。由于优惠条件中,一个200元的优惠幅度比两个100元的更大,因此应该优先凑200元的整数,然后再看100元的。故选A。
4.用Python语言实现“每满100减30,每满200减70,可以累计上不封顶”的优惠金额计算。设s为购买商品的原价,计算优惠金额t。下列选项正确的是( )
A.
t=s//200*70
if s%200>=100:
t=t+30
B.
t=s//100*30
if s//200>0:
t+=s//200*70
C.
if s>=200:
t=s//200*70
else:
t=s//100*30
D.
if s>=100:
t=t//100*30
else:
t=t//200*70
A.A B.B C.C D.D
答案:A
解析:本题考查的是选择语句的应用。题目要求实现“每满100减30,每满200减70,可以累计上不封顶”的优惠计算。优惠规则可以理解为:优先按每200元减70元计算,剩余金额再按每100元减30元计算(不满100元部分无优惠)。这种处理方式能最大化优惠金额,且符合“累计”要求。选项B,重复计算优惠,例如,s=200时,先算2*30=60,再加1*70=70,总优惠130元(实际应减70元),结果过大。选项C,未处理剩余金额,例如,s=300时,只减70元(实际应减100元),漏算了剩余100元的优惠。选项D,变量t未初始化,语法错误且逻辑混乱(例如,s=100时,t未赋值,程序会报错)。故选A。
【链接真题】
(2025高二·浙江·专题练习)1.小王编写了一个实现文字查找删除功能的python程序,用户分别输入原文和需要删除的字符,程序运行结束显示处理结果和删除次数。运行界面如图所示。
输入原文:我们是学生,我们的任务是学习,我们要努力!
删除字符:我们
处理结果为:是学生,的任务是学习,要努力!删除次数为:3
>>>
程序实现代码如下:
s1= input("输入原文:")
s2= input("删除字符:")
n= len(s2)
count=0
i=0
result=""
while i < len(s1):
s=①
if ② :
count+=1
i=i+n
else:
result+= s1[i]
③
print("处理结果为:"+ str(result)+"删除次数为:"+ ④ )
请在画线处填上合适的代码。
答案:①s1[i: i+n];② s==s2;③i=i+1;④str(count)
解析:本题考查python程序设计。分析题意,算法思想是从头开始遍历输入的原文,依次取出跟删除字符长度一致的字符,并进行内容比对,若内容一致,将原文中该处的内容删除,删除次数累加1;不断重复上述步骤,直到完成对原文的检索。①处空是从s1中取出跟s2长度相等的字符,故①处空填s1[i: i+n];②处空是判断从s1中取出的字符s与s2中的内容是否相等,故②处空填s==s2;③处空是当取出的字符s与s2中的内容不相等,则原文中下一个的字符内容应从i+1的位置开始取,故③处空填i=i+1;④处空是输出删除次数,“+”实现字符串的连接,利用str()函数将整型数据count转换为字符串,故④处空填str(count)。
(20-21高二·浙江绍兴·期中)2.根据输入的18位身份证,输出身份证中包含的出生日期信息。
sfz = input("请输入您的身份证号码(18位):")
if _____①_______:
print("您的身份证号码长度不对!")
else:
year = int(sfz[6:10])
_______②__________
day = int(sfz[12:14])
print("你的出生于",year,"年",month,"月",day,"日。")
请完善程序代码(1) ;(2) 。
答案:(1)len(sfz)!=18 ;(2)month=int(sfz[10:12])
解析:本题考查的是python选择语句。len( )是获取字符串长度,由print("您的身份证号码长度不对!")语句可知第一空应为:len(sfz)!=18;月份在身份证的第11、12位,python中字符串的下标是从0开始,故第二空应为:month=int(sfz[10:12])。
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$