涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:七月CIE_Python打卡题目
夏天快到了,又到了吃西瓜的季节。西瓜是夏天的代表,让人在它的色香味中,感受到夏天的魅力。请你用Python,画出如下图所示的西瓜:

要求:
(1)西瓜左上角坐标为,西瓜红壤左上角坐标为;
(2)整个西瓜半径为100,西瓜红壤半径为90;
(3)西瓜绘制完成后,隐藏画笔。
思路提示:
(1)先画绿色瓜皮,由于西瓜是向上的,所以,在画绿皮之前,需要把画笔右转90度(right(90));
(2)右转90度后开始画绿皮,画完后画笔回到坐标,以便形成完整的半圆,以便填充绿色;
(3)画笔移动到(10,0)坐标;
(4)将画笔右转180度(right(180));
(5)右转180度后开始画红壤,画完后画笔回到(10,0)坐标,以便形成完整的半圆,以便填充红色;
(6)隐藏画笔。
友情提示:
考试平台暂不支持画笔命名:Pen()命令,同学们可以选用其他命令;当然如果使用了Pen()命令,只要程序是正确的,阅卷时依然按照正确处理。
参考程序:
import turtle# 绘制西瓜绿皮turtle.right(90)turtle.fillcolor("green")turtle.begin_fill()turtle.circle(radius=100, extent=180)turtle.home()turtle.end_fill()# 到红壤左上角坐标turtle.forward(10)# 绘制西瓜红壤turtle.right(90)turtle.fillcolor("red")turtle.begin_fill()turtle.circle(radius=90, extent=180)turtle.goto(10, 0)turtle.end_fill()# 绘制结束,隐藏画笔turtle.hideturtle()turtle.done()9月底有一场大型的户外表演在体育中心举办,阿宝尝试用Python写一个检票程序,体育中心分为三个区域A区,B区和C区(A\B\C均为大写字母),看台区有1楼、2楼和3楼,球票为5位字符串,分别由字母和数字组成,第一位为大写字母,代表的是区域;第二位是数字,代表的是楼层;第3-5位为座位编号;例如:A2021第一位“A”表示A区,第二位“2”表示所在的楼层是“2楼”后面的是座位号。
具体要求如下:
(1)程序开始时提示:“请输入您的球票编码:”,根据输入的球票编码提示用户所在的观看区域、楼层和座位号;
(2)当输入的球票编码的区域和楼层错误时提示:“您的球票号输入有误,请重新输入”;
(3)当输入“0”,则退出查询,结束程序;
(4)如果没有输入“0”,程序一直可以输入球票编码;
输入样例1:
A2001输出样例1:
您的观看区域是:A区2楼001号座位输入样例2:
b1020输出样例2:
您的票号输入有误,请重新输入!请输入您的球票编码:输入样例3:
0输出样例3:
(直接退出查询,不显示任何数据)
友情提示: 由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。
参考程序:
注意:仅供参考,考生可以自行设计,结果符合题意即可。
whileTrue: ticket = input('请输入您的球票编码:') qu = ticket[:1] floor = ticket[1:2] num = ticket[2:]if ticket == '0':breakif (qu in'ABC') and (floor in'123'): print('您的观看区域是:{}区,{}楼,{}号座位'.format(qu, floor, num))else: print('您的票号输入有误,请重新输入!')小明用冒泡排序算法编写了一段代码,请帮他把代码中红色标记的①②③处,补充完整。
a = [8, 4, 2, 11, 3, 9]n = len(a)for i in range(0, __①___):for j in range(0, __②___):if a[j] > a[__③___]: a[j], a[j + 1] = a[j + 1], a[j]print(a)参考答案:
① n;
② n-i-1;
③ j+1。
在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。
一种办法是将已经中过奖的人员编号存放在test_list里面,然后每抽出一个新的人员编号,判断它是否在中奖人员列表中。
如果没有在中奖人员列表中,说明中奖号码有效,并将它保存进中奖人员列表;如果已经在里面了,就再生成一个新的人员编号。
请你补全下面的代码,实现判断一个数字是否在列表中的功能。
# 子问题算法(子问题规模为1)defis_in_list(init_list, num):if init_list[0] == num:return Trueelse:return False# 分治法deffind_out(init_list, num): n = len(init_list)if _____①_____ # 如果问题的规模等于1,直接解决return is_in_list(init_list, num)# 分解(子问题规模为n/2) left_list, right_list = _____②_____# 递归(树),分治,合并 res = find_out(left_list, num) _____③_____ find_out(right_list, num)return resif __name__ == "__main__":# 测试数据 test_list = [18, 43, 21, 3, 28, 2, 46, 25, 32, 40, 14, 36]# 查找 print(_____④_____) # True参考答案:
① n==1:或其他正确答案
② init_list[:n//2],init_list[n//2:]或其他正确答案
③ or或其他正确答案
④ find_out(test_list,25) 或其他正确答案
青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
