当前位置:首页>python>【第39期】21天养成编程习惯:Python刷题第01天

【第39期】21天养成编程习惯:Python刷题第01天

  • 2026-10-11 08:21:49
【第39期】21天养成编程习惯:Python刷题第01天

跟老马一起“升级打怪”学编程!

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

Day01:CIE一级2022.03_编程题37

作图题:

请使用turtle画出如下标志。

要求:

(1)线条颜色为黑色,线条粗细为10;

(2)圆半径为50,填充颜色为蓝色;

(3)等边三角形边长为180;

(4)等边三角形底边中点位置为画布正中心。

参考程序:

注意:仅供参考,画法和顺序,考生可以自行设计,结果符合题意即可。

import turtleturtle.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()

Day01:CIE二级2023.09_编程题37

中国电子学会主办的“全国青少年信息素养大赛”总决赛要开始了,组委会的老师要统计各个赛项报名的人数。请帮着写一个程序,实现该功能:统计时,输入各项编号表示对应的比赛:

1:Python编程挑战赛2:开源鸿蒙主题赛3:智慧物流挑战赛0:表示录入完毕

要求:

一、循环执行

二、当输入错误数据,可以提示“没有此编号请重复输入”;

三、当输入0后,自动统计所有项目的参赛人数,并输出出来;如下面的案例:

输入样例:

请输入赛项编号:1请输入赛项编号:2请输入赛项编号:3请输入赛项编号:2请输入赛项编号:1请输入赛项编号:1请输入赛项编号:0

输出样例:

Python编程挑战赛:3人开源鸿蒙主题赛:2人智慧物流挑战赛:1人

友情提示:

由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。

参考程序1:

lst = [0, 0, 0, 0]whileTrue:    n = int(input("请输入赛项编号:"))if n == 0:breakif n > 3or n < 0:        print("没有此编号请重复输入")continue    lst[n] += 1print("Python编程挑战赛:%d人" % lst[1])print("开源鸿蒙主题赛:%d人" % lst[2])print("智慧物流挑战赛:%d人" % lst[3])

参考程序2:

d = {"Python编程挑战赛": 0, "开源鸿蒙主题赛": 0, "智慧物流挑战赛": 0}whileTrue:    n = int(input("请输入赛项编号:"))if n == 0:breakelif n == 1:        d["Python编程挑战赛"] += 1elif n == 2:        d["开源鸿蒙主题赛"] += 1elif n == 3:        d["智慧物流挑战赛"] += 1else:        print("没有此编号请重复输入")for i in d:    print("{0}:{1}人".format(i, d[i]))

Day01:CIE三级2023.05_编程题38

某班“天天向上”小组共有6个同学,姓名和身高数据分别存放在列表a中,编写程序实现小组同学按身高从高到低输出名单,运行结果如图所示:

程序代码如下,请在划线处补充完整:

a = [["李洪全", 135], ["王倩倩", 154], ["吴乐天", 148], ["周立新", 165], ["鲁正", 158], ["杨颖颖", 150]]for i in range(1, len(a)):for j in range(0,____①____):if a[j][1]____②____a[j+1][1]:            a[j], a[j + 1] = a[j + 1], a[j]print("小组名单是:")for i in range(len(a)):    print(____③____)

参考答案:

本题考查冒泡排序算法。从外循环看,6个元素排5趟,应该能全部排整齐。内循环每趟主要从第一个元素开始,相邻元素两两相比,i=1时,j最终取到4,i=2时,j最终取到3,i=3时,j最终取到2,i=2时,j最终取到1,i=1时,j最终取到0,由于range()的终值是取不到的,故第一空应填len(a)-i;根据题目从高到低的要求,若前一个数小于后一个数,则应将其往后移,故第二空应为“<”;由输出结果观察可知,只需要输出排序后列表中的姓名部分,故第三空应填a[i][0]。

① len(a)-i;

② <;

③ a[i][0]。


Day01:CIE四级2023.09_第37题

一个列表中存在n个数据,可以用分治算法来找到其中的最小值。具体过程如下:如果列表元素的个数小于等于2的时候,经过一个判断就找到其中的最小值,所以可以先把数据从中间划分为左右两部分,然后通过递归把每一部分再划分为左右两部分,直到数据规模小于等于2的时候,返回结果,然后通过递归到最后为两个数据对比,我们就可以找到最小值。

请根据以上算法过程,补全代码。

# 求列表中小于两个元素的最小值defget_min(number):if len(number) == 1:return _____①_____  else:if number[1] > number[0]:return number[0]else:return number[1]defsolve(number):    n = len(number)if n <= 2:return get_min(number)else:# 将整个列表分为左右两部分        left_list, right_list = _____②_____, number[n // 2:]# 递归(树),分治        left_min, right_min = solve(left_list), _____③_____return get_min([left_min, right_min])test_list = [5, 11, 3, 2, 7, 9]print(solve(test_list))

参考答案:

① number[0]

② number[:n // 2]

③ solve(right_list)


青少年编程竞赛交流

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章