涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月CIE_Python打卡题目
小海龟最近正在学习中国传统文化,小海龟对传统节日元宵节特别感兴趣,元宵节作为中国传统节日又被称为灯节,小海龟为了庆祝元宵节,它想绘制一个彩色的荷花灯图形,如下图所示:

要求:
(1)彩色荷花灯由5个花瓣组成,画笔颜色为粉色(pink);
(2)相邻花瓣的对称轴夹角的角度为30度(提醒同学们程序中的旋转角度可不一定是30度);
(3)单个花瓣的弧度为90度,半径为70;
(4)最左侧花瓣的上下两个线条中,上线条是小海龟左转105度后利用画圆工具绘制而成的;
(5)最后小海龟隐藏。
参考程序:
注意:仅供参考,考生可以自行设计,结果符合题意即可。
import turtleturtle.pencolor('pink')turtle.left(105)for i in range(5): turtle.circle(70, 90) turtle.left(90) turtle.circle(70, 90) turtle.left(60)turtle.hideturtle()turtle.done()编写程序帮老师对英语试卷中的英文字母、数字和其他字符(注意:包括空格)进行分类并统计每种字符的数量。
输入样例:
**Welcome to 2023~!输出样例:
字母:Welcometo,共9个数字:2023,共4个其它字符:** ~!,共6个参考程序:
注意:仅供参考,考生可以自行设计,结果符合题意即可。
程序1:
dic = {'字母': ['', 0], '数字': ['', 0], '其它字符': ['', 0]}s = input()for i in s:if i.lower() in'abcdefghijklmnopqrstuvwxyz': dic['字母'][0] += i dic['字母'][1] += 1elif i in'0123456789': dic['数字'][0] += i dic['数字'][1] += 1else: dic['其它字符'][0] += i dic['其它字符'][1] += 1print('字母:{},共{}个'.format(dic['字母'][0],dic['字母'][1]))print('数字:{},共{}个'.format(dic['数字'][0],dic['数字'][1]))print('其它字符:{},共{}个'.format(dic['其它字符'][0],dic['其它字符'][1]))程序2:
s = input()letter = ''number = ''other = ''for i in s:if i >= 'a'and i <= 'z'or i >= 'A'and i <= 'Z': letter += ielif i >= '0'and i <= '9': number += ielse: other += iprint('字母:{},共{}个'.format(letter, len(letter)))print('数字:{},共{}个'.format(number, len(number)))print('其它字符:{},共{}个'.format(other, len(other)))程序3:
s = input()letter = ''number = ''other = ''for i in s:if i.isalpha(): letter += ielif i.isdigit(): number += ielse: other += iprint('字母:{},共{}个'.format(letter, len(letter)))print('数字:{},共{}个'.format(number, len(number)))print('其它字符:{},共{}个'.format(other, len(other)))在三位数的自然数中,找出至少有一位数字是5的,至少能被3整除的所有整数,并统计个数,具体代码如下:
count = 0lst = []for i in range(____①____):if i % 3 == 0: a = i % 10 b = i // 10 % 10 c = ____②____if ____③____: count += 1 lst.append(i)print("这样的三位数有:", lst)print("总数量有:", count)参考答案:
① 100, 1000 或者 100, 1000, 1;
② i//100;
③ a==5 or b==5 or c==5。
在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。
一种办法是将已经中过奖的人员编号存放在test_list里面,然后每抽出一个新的人员编号,判断它是否在中奖人员列表中。
如果没有在中奖人员列表中,说明中奖号码有效,并将它保存进中奖人员列表;如果已经在里面了,就再生成一个新的人员编号。
请你补全下面的代码,实现判断一个数字是否在列表中的功能。
# 子问题算法(子问题规模为1)defis_in_list(init_list, num):if init_list[0] == num:returnTrueelse:returnFalse# 分治法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天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
