涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月CIE_Python打卡题目
作图题:
请使用turtle画出如下标志。

要求:
(1)线条颜色为黑色,线条粗细为10;
(2)圆半径为50,填充颜色为蓝色;
(3)等边三角形边长为180;
(4)等边三角形底边中点位置为画布正中心。
参考程序:
注意:仅供参考,画法和顺序,考生可以自行设计,结果符合题意即可。
import turtle
turtle.pencolor('black')
turtle.pensize(10)
turtle.fillcolor('blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.penup()
turtle.goto(-90, 0)
turtle.pendown()
for i in range(5):
turtle.forward(180)
turtle.left(120)
turtle.home()
turtle.done()
在一个简单的 AI 智能聊天机器人场景中,用户会输入一段聊天内容,机器人需要判断用户的意图是否与预设的关键词相关。
预设关键词列表为 ["你好", "再见", "谢谢"](需要在程序中明确预设)。如果用户输入的内容中包含任何一个预设关键词,机器人将按照以下规则做出相应回复:
(1)若包含 “你好”,优先回复 “你好呀!有什么我可以帮忙的?”;
(2)若包含 “再见”(且不包含 “你好”),回复 “再见啦!祝你有个好心情!”;
(3)若包含 “谢谢”(且不包含 “你好” 和 “再见”),回复 “不客气呀!能帮到你我很开心。”;
(4)如果不包含任何关键词,则回复 “不太明白你的意思呢,可以换个说法吗?”。
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。
参考程序:
注意:仅供参考,考生可以自行设计,结果符合题意即可。
# 预设关键词列表
keywords = ["你好", "再见", "谢谢"]
# 获取用户输入
user_input = input("请输入聊天内容:")
# 根据关键词判断并输出回复
if"你好"in user_input:
print("你好呀!有什么我可以帮忙的?")
elif"再见"in user_input:
print("再见啦!祝你有个好心情!")
elif"谢谢"in user_input:
print("不客气呀!能帮到你我很开心。")
else:
print("不太明白你的意思呢,可以换个说法吗?")
学校食堂购买 110个餐具,总共花了 2200元 。
已知:盘子25元一个,碗20元一个,勺子10元一个,请列出盘子、碗、勺子各买多少个的所有组合。
为解决上述问题,小明编写了以下Python程序,运行结果如后图。
请将下面数字序号①②③④⑤⑥处的代码补全:
plate = 0
bowl = 0
spoon = 0
price = 0
b = []
for plate in range(1, round(2200 / 25)): # 盘子数量从少到多
price = _____①_____ # 计算盘子价格
for bowl in range(1, _____②_____): # 碗数量从少到多
price1 = price + bowl * 20# 计算盘子加碗的价格
for spoon in range(1, round(2200 / 10)): # 勺子数量从少到多
price2 = price1 + spoon * 10# 计算盘子加碗再加勺子的价格
if _____③_____: # 如果总价等于2200元
if _____④_____ == 110: # 如果个数等于110个
b._____⑤_____([plate, bowl, spoon, price2]) # 将当前数据加入到数组中
for a in _____⑥_____:
print('盘', a[0], '个;碗', a[1], '个;勺', a[2], '个;价', a[3]) # 打印出数组中符合要求的数据

参考答案:
① plate * 25 或等效答案;
② round(2200/20) 或等效答案;
③ price2 == 2200 或等效答案;
④ plate+bowl+spoon 或等效答案;
⑤ append 或等效答案;
⑥ b或等效答案。
未来居民社区设计有一个机器人服务中心,假如某社区有若干栋住宅楼,每栋楼的位置可以由坐标表示,其中坐标表示居民楼的东西向位置,坐标表示居民楼的南北向位置。这里约定,社区中任意2点和的之间的距离使用数值来度量。要求为社区选择建立机器人服务中心的最佳位置,使各个居民点到机器人服务中心的距离总和最小。以下是机器人服务中心的选址程序,采用取各坐标中位数的方法来确定中心位置,请补充完成该程序。
n = int(input("请输入居民楼总数:"))
hx = []
hy = []
for i in range(n):
x, y = map(int, input("请输入居民楼的x和y坐标:").split(","))
hx.append(x)
hy.append(y)
hx = sorted(_____①_____)
hy = sorted(_____②_____)
if n % 2 == 0: # 偶数情况,求中位数
sn = int(n / 2)
x0 = int((hx[sn] + hx[sn - 1]) / 2)
y0 = int((hy[sn] + hy[sn - 1]) / 2)
else: # 奇数情况,求中位数
sn = int((n - 1) / 2)
x0 = _____③_____
y0 = _____④_____
sumx = 0
sumy = 0
for j in hx:
dx = abs(x0 - j)
sumx += dx
for k in hy:
dy = abs(y0 - k)
sumy += dy
print("选址点的坐标是:(%d,%d)" % (x0, y0))
print("选址到各楼的累计距离是:", sumx + sumy)
参考答案:
① hx
② hy
③ hx[sn]
④ hy[sn]
青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
