I am a teacher!

导航

习题解析之:模拟生成车牌号

【问题描述】

编写一段能生成若干个车牌号的代码

在本题中,根据如下步骤随机生成若干个车牌号。

分行输入随机种子以及车牌号数量n,生成包含n个车牌号的列表并输出。

车牌号规则:

以'鄂A-'或'鄂W-'开头
长度总共为8位,后5位中包含最多2个字母字符,其余为数字
为避免数字与字母混淆,如'1'与'I','0'与'O',车牌号中不应出现字母'I'与'O'
生成车牌号步骤:

定义一个函数完成下列步骤
随机生成0~2之间的随机整数t,代表车牌中字母个数---random.randint()
在大写字母字符串string.ascii_uppercase(需要删除'I'与'O')中随机抽取t个字母---random.choices(),权重相同
在数字字符串string.digits中随机抽取5-t个数字字符---random.choices(),权重相同
将生成的随机字母串与数字字符串连接,字母字符串在前
对连接后的列表随机打乱---random.shuffle()
将打乱后的列表中字符连接为字符串s
随机在列表['鄂A-','鄂W-']中随机抽取车牌前三位---random.choice()
将选取的车牌前三位与s连接得到车牌号并返回
为保证评测结果相同,代码中必须严格按照上述步骤顺序及使用指定随机数函数。

示例

输入:
5
20
输出:
['鄂A-958G7', '鄂W-67161', '鄂W-94731', '鄂A-05W5H', '鄂W-7Y18Y', '鄂A-75121', '鄂A-1107U', '鄂A-1530D', '鄂W-R2005', '鄂W-7629W', '鄂W-R069D', '鄂W-87657', '鄂A-76S9L', '鄂A-28312', '鄂A-46J15', '鄂W-39T2U', '鄂W-65425', '鄂A-220T8', '鄂W-36PL9', '鄂W-E9582']

【编程思路】

        本题主要是考查 random 库函数的使用方法。用到的主要函数如下:

        random.seed(a=None):初始化随机数种子,默认为当前系统时间。种子相同则生成的随机序列相同。例如,random.seed(10)。

        random.randint(a, b) :生成 [a, b] 范围内的随机整数(包含a和b)。 例如,random.randint(1, 10) 生成一个 1 ~ 10 之间的随机整数。

        random.choice(seq) :从非空序列seq(如列表、元组)中随机返回一个元素。 例如,random.choice([1, 2, 3]) 在1、2、3这3个数中随机抽取一个数。

        random.shuffle(seq) :原地打乱序列seq的顺序(仅支持可变序列如列表)。 例如,random.shuffle([1, 2, 3]) 。

        random.choices(seq, weights, k):从非空的样本序列 seq 中按对应的权重列表 weight 给定的权重,随机抽取 k 个样本。如果权重列表 weights 省略,则默认为序列中每个样本被抽取的概率相同。例如,random.choices([1,2,3,4,5], k = 3) 表示从[1,2,3,4,5]列表中,按相同权重,随机抽取 3 个样本数据。

        编写的源程序如下:

        image

posted on 2025-11-21 17:22  aTeacher  阅读(51)  评论(0)    收藏  举报