第十届蓝桥杯大赛Python组省赛
一、 编程题
第一题 (难度系数 1,满分 50 分)
编程实现:
通过1、3、5、8这四个数字,可以排列出互不重复的三位数各有哪些?一共有多少个?
输入:
无
输出:
多行数字,每行一个三位数
组成的三位数的总个数
将程序命名为“** l**** q**** 001** ”。
评判标准:
10 分: 能输出至少一个三位数字;
30 分: 输出了多于 10 个三位数字,且确实不重复;
50 分: 完全符合题意要求,基于30分的标准,正确输出了所有可组合的三位数及其组合后的三位数的总数量。
第二题 (难度系数 2,满分 50 分)
编程实现:
打印出 1~1000 之间包含 3 的数字;
如果 3 是连在一起的(如 233) 则在数字前加上&;
如果这个数字是质数则在数字后加上*,例: (3,13*,23*,&33,43*…&233*…)。
输入:
无
输出:
按照题意输出的数字,每行一个数字;
样例输出:

将程序命名为“** l**** q**** 002** ”。
评判标准:
10 分:完成打印 1~1000 之间包含 3 的数字
30 分: 在 10 分标准的基础上,找出其中的连 3,前面加&
50 分: 在 30 分标准的基础上,找出其中的质数,后面加*
第三题 (难度系数 3,满分 50 分)
编程实现:
让用户在一次输入时输入 N 个数字(2<=N<=15,即每次输入的数字数量不同),数字之间以“, ”作为分 隔。
然后组合显示:
(1)用户输入的数字个数;
(2)用户输入的最小的数字;
(3)将用户输入的数字按从大到小进行排列输出,数字之间以“, ”作为分隔;
当输入的数字不大于26时,可找到对应的26个大写字母,其中1对应字母A,26对应字母Z。
将输入的数字拼接在一起后打印显示,当输入的数字不在1至26范围内时,将不显示对应字母。例如,当程序输入214时,输出结果为「[bad]」。
输入:
N 个数字,2<=N<=15
输出:
输入的数字个数
输入的最小数字
输入的数字从大到小排列
输入的数字所对应的字母
样例输入:
9,12,15,22,5,21,214
样例输出:
7
5
214,22,21,15,12,9,5
ILOVEU[bad]
将程序命名为“** l**** q**** 003** ”。
评判标准:
10 分: 正确输出用户输入的数字个数
20 分: 在 10 分标准的基础上,正确输出用户输入的最小数字
40 分:基于 20 分的标准,准确地将用户输入的数字按照从大到小的顺序进行排序输出。
50 分:完全符合题意要求,基于 40 分标准,正确完成将数字转换为相应字母的环节。
第四题 (难度系数 3,满分 50 分)
在 Turtle 画布上画出 5 个随机大小的五角星。
具体要求:
Turtle 画布的大小为:宽 800 像素,高 600 像素;
一共绘制 5 个五角星;
每个五角星在画布内的显示位置都是随机确定的,五角星之间可能会有重叠甚至完全覆盖的情况,同时,每个五角星必须完整无缺地显示在画布内。
在程序运行过程中应明显看出绘制过程,建议绘图速度为 7;
每个五角星的线条呈黑色色系,宽度设定为5个单位,并以黄色填充;提示:每个顶点的内角(锐角)为36度。
五角星的基本形状例如本题图-1 所示:

将程序命名为“** l**** q**** 004** ”。
评判标准:
10 分:至少画出了一个形状正确的五角星,不论其大小、位置、颜色和填充与否;
20 分:至少画出了一个形状、线段颜色、线宽正确的五角星;
40 分:创建了 5 个随机分布的位置、不同尺寸的五角星,且形状和颜色均正确。为了验证生成的五角星是否随机,需进行多次运行测试。
50 分:完全符合题意要求,基于 40 分的标准,经过多次程序运行后,所有三角形均在画布范围内显示,且填充颜色为黄色,能够清晰地显示出绘画过程。
第五题 (难度系数 5,总分 100 分,程序 1 满分 50 分,程序 2 满分 50 分)
分形树
步骤 1 :
利用 Turtle 画出如本题图-1 所示的分形树。
要求:
树木主干向上生长;
分形层数为 4 ,二叉树;
第一层树枝长度为 60 ,逐层减 6 ;
左右树枝的倾斜角度不限,最终效果与图-1 所示大致相同即可。
必须能看出绘图过程。

将程序命名为“** l**** q**** 00501** ”。
评判标准:
10 分:能够画出大致如图中的第一层树枝;
30 分:能够画出大致如图中的两层以上的树枝,且为二叉树;
50 分:完全符合题意,即图形向上的生长,采用二叉树结构,共4层,每层树枝长度递减,能够观察到绘图过程。
步骤 2 :
一、修改步骤 1 中生成分形树的方法:
分型层数改为 4~6 之间的随机数;
第一层树枝长改为 30~60 之间的随机数;
二、绘制分形树丛
在 800X600 的屏幕中绘制分形树丛;
树木数量为 50 棵;
每棵分形树的树根位置位于屏幕区域内,且为随机生成的坐标点;其分支可以超出屏幕窗口的范围。
以屏幕中分隔线为分界,左部的树形向左倾斜生长,右部的树形向右倾斜生长;呈现出对称的布局。
绘制过程瞬间完成 (即看不到绘画过程)。
整体绘制样例如本题图-2 所示

将程序命名为“** l**** q**** 00502** ”。
评判标准:
0 分:步骤 1 没有得到满分;
10 分:能在画布中画出50 颗随机位置的树木,即使朝向相同、层数固定;
30 分:在 10 分标准的基础上,能画出层数随机、树枝长短随机的分形树;
50分:完全符合题意要求,即基于30分的标准,能够绘制出符合题意要求朝向倾斜的分形树结构,且绘画过程瞬间完成,即观察者无法察觉绘画过程的存在。
第六题 (难度系数 6,满分 120 分)
编程实现: 商品管理系统
预先准备:
建立 userpass.txt
建立并存储用户信息文件。文件格式说明:以逗号加空格分隔的一组用户名和密码信息。例如:
zhangsan,123456
建立 goods.txt
按照自定义格式进行存储,记录三个商品的信息,每个商品包含商品编号、商品名称、商品类型以及商品库存。
001,商品 1,类型 1,10;002,商品 2,类型 1,5;003,商品 3,类型 2,20
系统登录:
展示一个六位随机码,并要求用户输入用户名、密码以及刚刚显示的六位验证码;
当输入的用户名和密码与 userpass.txt 文件中的信息一致,并且验证码与提示的 6 位验证码匹配时,判断为有效。
合,则程序进入系统主界面的初始状态(见下文中的“系统主界面”->“初始状态”部分),例如以下流程。
说明:以为背景的是内容程序输出, __ 内容为用户输入:
您的登录验证码为 386597
请输入用户名: zhangsan
请输入密码: 123456
登录验证码: 386597
身份验证通过,欢迎登录!
当用户输入的用户名和密码与 userpass.txt 文件中的信息不一致,或者用户的验证码与系统提示的 6 位验证码不符。
合,则登陆不成功,提示身份验证失败, 退出程序。例如以下过程:
说明:以为背景的是内容程序输出, __ 内容为用户输入:
您的登录验证码为 386597
请输入用户名: zhangsan
请输入密码: 123456
登录验证码: 123456
身份验证失败!
系统主界面:
从文件中获取所有商品的相关信息,包括商品编号、名称、类型和库存数量,并以符号::提示输入命令。
当用户输入'add'时,系统将执行添加操作。请客户输入以下信息:商品编号、商品名称、商品类型以及库存数量。在输入过程中,系统需要进行判断。
所有输入字段不得为空,且库存数量必须是数字格式的数值,在输入完成后,系统将新增的商品信息记录至文件中,并使系统返回到初始状态。
当输入"count"时,系统将计算并输出所有商品库存数量的总和,并返回到初始状态。
如此循环。
请注意,在程序运行期间,无论用户输入何如,都不会出现红色错误信息导致程序出现异常终止(通过 try/except 语句处理)。
add 命令的输入输出过程可自行设计,输入输出样例(仅供参考) 例如:
说明:以为背景的是内容程序输出, __ 内容为用户输入:
::add
商品编号: 004
商品名: 商品 4
商品类型: 类型 3
库存数量: 30
001,商品 1,类型 1,10
002,商品 2,类型 1,5
003,商品 3,类型 2,20
004,,商品 4,类型 3,30
::
count 命令的执行过程例如:
说明:以为背景的是内容程序输出, __ 内容为用户输入:
::c ount
65
001,商品 1,类型 1,10
002,商品 2,类型 1,5
003,商品 3,类型 2,20
004,,商品 4,类型 3,30
::
评判标准:
20 分:完成从userpass.txt中获取用户信息并检查用户输入的用户名和密码的有效性;通过修改userpass.txt文件的内容来验证。
30 分:基于 20 分的标准,实现了生成并显示 6 位随机数(验证码)并验证用户输入的验证码是否与之相符的功能;
本题得分为 50 分,基于 30 分的标准,要求实现从文件中获取 3 个商品信息并将其输出至 Python 控制台的功能。
基于50分的标准,实现通过 add 命令将商品信息写入指定文件中,对输入的非空性和数据类型进行严格的验证,并实现从文件中读取所有商品信息以显示在系统中。确保系统主界面处于初始状态,且该 add 命令可重复执行以满足后续操作需求。
100 分:基于70分的标准,实现商品总库存量的计算(count命令),同时显示文件中所有商品,并返回到系统主界面的初始状态;且count命令可以重复执行。
120 分: 在 100 分标准的基础上,整个程序运行过程中,无论用户的输入内容如何,都不会出现红色ERROR错误导致程序异常退出。
