2026年信息素养初赛-数字守艺人-小学4~6年级组python(模拟练习3)_第1页
2026年信息素养初赛-数字守艺人-小学4~6年级组python(模拟练习3)_第2页
2026年信息素养初赛-数字守艺人-小学4~6年级组python(模拟练习3)_第3页
2026年信息素养初赛-数字守艺人-小学4~6年级组python(模拟练习3)_第4页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题

第1题

数字守艺人场景中,选手用Python模拟剪纸工坊的原料统计:现有3种红纸规格,分别是每张能剪8个窗花、5个窗花、3个窗花,工坊

今天需要产出100个窗花,要求优先使用大规格纸张减少浪费。以下哪种循环逻辑能最精准计算最少需要的纸张总数?

A.先算8规格的最大用量,再用剩余数量算5规格,最后算3规格

B.直接用100除以(8+5+3)取整再加1

C.用while循环从1开始累加,直到总产能≥100

D.先计算3种规格的平均产能,用100除以平均值取整

答案:A

解析:题目要求优先用大规格纸张减少浪费,属于贪心算法的典型场景。选项A的逻辑完全符合贪心策略,先最大化使用产能最高的8

规格纸张,再依次处理剩余需求,能得到最少纸张数;选项B的平均计算方式会造成极大浪费;选项C的累加方式效率极低且不符合优

先大规格的要求;选项D的平均产能计算无法保证最少纸张数。

第2题

在Python中为皮影戏角色设计动作序列,需要将["抬手","踢腿","转身"]这个列表重复执行5次,同时每次执行前打印"第X幕:"(X为幕

次)。以下代码片段最简洁且符合要求的是?

A.

actions=["抬手","踢腿","转身"]

foriinrange(5):

print(f"第{i+1}幕:")

foractioninactions:

print(action)

B.

actions=["抬手","踢腿","转身"]

i=1

whilei<=5:

print(f"第{i}幕:")

print(actions)

i+=1

C.

actions=["抬手","踢腿","转身"]

foriinrange(1,6):

print(f"第{i}幕:")

print(''.join(actions))

D.

actions=["抬手","踢腿","转身"]

for_inrange(5):

print(f"第{_+1}幕:")

forainactions:

print(a)

答案:A

解析:选项A的代码逻辑清晰,外层循环控制幕次,内层循环逐个打印动作符合题目要求;选项B直接打印列表会输

['抬手','踢腿','转身']

的格式,不符合动作序列展示要求;选项C用

join

会将动作合并成一行字符串,而非逐个输出;选项D

_

在循环中作为变量时,

_+1

的写法虽然能运行,但不符合Python的编码规范,且可读性差。

第3题

数字守艺人场景中,选手需要统计100张剪纸作品的星级评分分布,分范围是1-5星。以下哪种数据结构最适合存储不同级的作品

数量?

A.列表

B.元组

C.字典

D.集合

答案:C

解析:字典适合存储键值对数据,这里可以用星级(1-5)作为键,对应星级的作品数量值能快速通过查询;列表需要

用索引对应星级,从0开始会造成逻辑混乱;元组是不可变类型,无法动态统计数量集合允许重复素,且存储键值对应

关系。

第4题

用Python模拟二十四节气的物候提醒,需要判断当前月份对应。已知3月对应惊蛰、春分,以下哪个条件表达式能正确判断输入

的月份

month

是否属于春季节气所在月份(3-5月)?

A.

month==3or4or5

B.

3<=month<=5

C.

monthin[3,4,5]

D.

month>2andmonth<6

答案:C

解析:选项C用

in

运算符判断月份是否在春季列表中,逻辑清晰且符合Python语法;选项A的表达式逻辑错

误,

month==3or4or5

会被解析为

(month==3)or4or5

,由于4和5是非零值,会永远返回True;选项B和D的表达式虽然结果正

确,但题目强调的是“属于春季节气所在月份”,用列表的成员判断更贴合“指定月份集合”的语义,且在后续扩展月份时更易维护。

第5题

剪纸工坊用Python计算原材料成本:每张红卡纸2.5元,购买超过50张时,超出部分打8折。输入购买数量

n

,以下代码能正确计算总

费用的是?

A.

ifn>50:

cost=50*2.5+(n-50)*2.5*0.8

else:

cost=n*2.5

B.

cost=n*2.5

ifn>50:

cost-=(n-50)*2.5*0.2

C.

cost=2.5*(50+max(0,n-50)*0.8)

D.

cost=n*2.5*0.8ifn>50elsen*2.5

答案:A

解析:选项A的逻辑最清晰,直接分情况计算:不超过50张时按原价,超过部分单独计算折扣;选项B的逻辑是先算全价再减去折扣

优惠,结果正确但可读性差;选项C的计算公式错误,会将50张也按0.8倍计算;选项D错误地将所有数量都打8折,不符合“超出部分打

折”的要求。

第6题

用Python为皮影戏角色建立属性字典,以下哪个的键值对定义不符合数字守艺人场景语规范?

A.

shadow_character={"name":"孙悟空","height":30,"actions":["翻跟头","挥棒"]}

B.

shadow_character={"角色名":"白素贞","尺寸":25,"动作列表":["抬手","施法"]}

C.

shadow_character={"name":"武松","height":"35cm","actions":["打虎","饮酒"]}

D.

shadow_character={"name":"嫦娥","height":28,"actions":10}

答案:D

解析:选项D中

actions

的值是整数10,不符合“动作序列”的语义,应该用列表存储多个动作;选项A、B的键名无论是英文还中

文,只要语义清晰都符合要求;选项C中

height

的值是字符串类型,虽然更适合用数但语义上仍能表示尺寸,不属于规范错误。

第7题

数字守艺人场景中,需要筛选出制作时间超过30分钟的剪纸作品,现有列

works=[{"name":"喜字","time":25},{"name":"龙凤图","time":35},{"name":"福字","time":28},{"name":"百鸟朝凤","time":45}]

,以下列表推导式能正确筛选的是?

A.

[wforwinworksifw["time"]>30]

B.

[w["name"]forwinworksifw["time"]>30]

C.

[wforwinworksiftime>30]

D.

[works[i]foriinrange(len(works))ifworks[i]["time"]>30]

答案:A

解析:选项A的列表推导式直接筛选出符合条件的作品字典,符合题目要求;选项B只提取了作品名称,没有保留完整的作品信息;选

项C中

time

变量未定义,会引发NameError;选项D的写法虽然正确,但使用索引遍历方式不如直接元素简洁。

第8题

用Python模拟陶艺拉坯的转速调控,需要根据泥的直径整:直<10cm时转速为120转/分,10≤直径<20cm时转速为80转/

分,直径≥20cm时转速为50转/分。以下哪个函数的实现最简洁且逻辑正确?

A.

defget_speed(diameter):

ifdiameter<10:

return120

elifdiameter<20:

return80

else:

return50

B.

defget_speed(diameter):

speed=50

ifdiameter<20:

speed=80

ifdiameter<10:

speed=120

returnspeed

C.

defget_speed(diameter):

speeds={range(0,10):120,range(10,20):80,range(20,100):50}

forr,sinspeeds.items():

ifdiameterinr:

returns

D.

defget_speed(diameter):

return120ifdiameter<10else80ifdiameter<20else50

答案:D

解析:选项D使用Python的三元表达式嵌套,实现了和选项A完全相同的逻辑,且代码最简洁;选项A的逻辑正确但代码行数较多;选

项B的多if判断逻辑虽然正确,但可读性不如elif结构;选项C用字典存储区间的方式在问题,

range(0,10)

无法直接判断整数是否在

区间内(Python3中range是迭代器),且区间定义不严谨。

第9题

数字守艺人场景中,选手需要计算10位剪纸艺人的平均制作工时,列表为

times=[22,25,30,28,26,32,24,27,29,31]

,以下代

码能正确计算平均值的是?

A.

sum(times)/len(times)

B.

average(times)

C.

sum(times)//len(times)

D.

sum(times)/10

答案:A

解析:选项A用

sum()

计算总工时,

len()

获取艺人数量,相除得到平均值是最通用且正确的写法;选项B中Python标准库没有内置

average()

函数;选项C用整数除法会丢失小数部分,无法得到精确平均值;选项D直接除以10,虽然当前列表长度是10,但如果列

表长度变化会导致错误,通用性差。

第10题

用Python为二十四节气制作倒计时功能,需要计算当前日期到下一个的天数。以哪种方法最适合处理?

A.手动计算每个月的天数,累加得到间隔

B.使用datetime模块中的date类进行日期运算

C.将日期转换为时间戳(秒数),计算差值后转换为天数

D.用列表存储每个节气的日期,逐比较计算间隔

答案:B

解析:Python的datetime模块是专门处理日期时间的标准库,其中date类支持直接的日期减法运算,能自动处理闰年、不同月份天数等

问题,是最简洁且准确的方法;选项A手动计算极易出错;选项C的时间戳方法需要处理转换,不如datetime直观;选项D的列表比

较方法效率低且逻辑复杂。

第11题

数字守艺人场景中,需要对皮影角色的制作耗时进行排序字典

time_dict={"孙悟空":25,"白素贞":30,"武松":28,"嫦娥":22}

,以下代码能得到按耗时升序排列的角色表是?

A.

sorted(time_dict.keys(),key=lambdax:time_dict[x])

B.

sorted(time_dict.items(),key=lambdax:x[1])

C.

sorted(time_dict.values())

D.

sorted(time_dict,key=time_dict.get)

答案:D

解析:选项D中

sorted(time_dict)

默认遍历字典的键,

key=time_dict.get

表示按键对应的值排序,最终得到耗时升列角

色名称列表,符合题目要求;选项A的写法正确,但不如选项D简洁;选项B返回的是排序后键值对元组列表,不单纯角色;

选项C只返回了排序后的耗时值,没有角色名称。

第12题

用Python模拟刺绣工坊的线量统计,现有红、蓝绿三种绣线每长度存储在列表

threads=[120,80,150]

(单位:米),

需要计算总长度并按"总长度:X米"的格式输出,以下代码最简洁的是?

A.

print(f"总长度:{sum(threads)}米")

B.

total=threads[0]+threads[1]+threads[2]

print("总长度:{}米".format(total))

C.

total=0

fortinthreads:

total+=t

print("总长度:"+str(total)+"米")

D.

print("总长度:%d米"%sum(threads))

答案:A

解析:选项A使用Python3.6+支持的f-string格式化输出,结合

sum()

函数,代码最简洁且可读性高;选项B的格式化写法正确但不如

f-string直观;选项C的循环累加方式效率低且代码冗余;选项D的旧式格化写法(%操作符)已逐渐被f-string替代,可读性较差。

第13题

数字守艺人场景中,选手需要处理剪纸作品的星级评分求将输入字符串(如"3星")转换为整数3,以下代码片段能正确处理

的是?

A.

score_str=input("请输入评分:")

score=int(score_str[0])

B.

score_str=input("请输入评分:")

score=int(score_str.replace("星",""))

C.

score_str=input("请输入评分:")

score=int(score_str[:-1])

D.

score_str=input("请输入评分:")

score=int(''.join([cforcinscore_strifc.isdigit()]))

答案:D

解析:选项D通过列表推导式提取字符串中的所有数字字符,再转换为整数能处理各种格式输入(如"三星"、"3星级"等),鲁棒性

最强;选项A只取第一个字符,若输入是"10星"会出错;选项B的replace方法只能处理"星"字,无法处理中文数;选项C只截取最后

一个字符前的内容,若输入是"★3"会出错。

第14题

用Python模拟糖画熬制的温度监控,需要每隔1秒打印一次当前温度,共10次。以下代码能正确实现的是?

A.

importtime

foriinrange(10):

print(f"当前温度:{80+i*2}℃")

time.sleep(1)

B.

importtime

i=0

whilei<10:

print(f"当前温度:{80+i*2}℃")

i+=1

C.

foriinrange(10):

print(f"当前温度:{80+i*2}℃")

time.sleep(1)

D.

importtime

defprint_temp():

foriinrange(10):

print(f"当前温度:{80+i*2}℃")

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论