Python 生成随机字母的几种方法,外加随机生成车牌号的方法

发布于 2023-12-28  741 次阅读


在Python中生成随机字母,我有两种思路,一种基于ASCII码还有一种基于Python自带的String函数:

基于ASCII码的随机数生成

import random
s=chr(random.randint(65,90))
print(s)

其中 chr()负责吧int数据根据ASCII表转译成字符,random.randint()负责生成随机数,方法优点是只需要调用一个random,缺点就是灵活性不高。

基于String的方法可调用性高相对较高,具体代码如下:

import random
import string
s=random.choice(string.ascii_uppercase)
print(s)

其中string.ascii_uppercase 会生成一个全英文大写字母的字符串,在通过random.choice()来随机从字符串中获取其中的一个。

那么通过这个原理,我们可以进行车牌号的随机生成,用辽宁举例,因为辽宁的前开头字母只到K,所以我们首先需要用chr(random.randint(A,B)) 的方法将字母控制在A-K之间(实际上没有辽I,一个while解决的问题暂且忽略),然后在获取后面的五个随机字母+数字,代码具体如下:

import random
import string
s1=chr(random.randint(65,69))
#基于ASCII码生成一个在A-E之间的大写字母

s2=random.sample(string.ascii_uppercase+string.digits,5)
#在大写字母+0-9数字的字符串中以数组的形式随机取5个值
s3="".join(s2)
#使用"".join 拼接数组

CarNumber=""" 辽%s :%s """

print(CarNumber % (s1,s3))

最终的成果版如下:

import random
import string
s=3
for i in range(3):
    num=[]  #定义一个用来存储车牌号的列表
    for j in range(20):
        s1=chr(random.randint(65,69))  #基于ASCII码生成一个在A-E之间的大写字母

        while s1==("I"):
            s1 = chr(random.randint(65, 69))
            #排除辽I

        s2=random.sample(string.ascii_uppercase+string.digits,5)   #在大写字母+0-9数字的字符串中以数组的形式随机取5个值
        s3="".join(s2)    #使用"".join 将数组拼接成字符串
        CarNumber="""辽%s-%s"""
        print(CarNumber % (s1,s3))
        num.append(CarNumber % (s1,s3)) #将生成记录存储到num数组
    choice = input(f"请输入你选中的号码,若不满意可以输入任意字符随机生成,您还有{s}次机会重新生成:").strip()
    s=s-1
    if choice in num:
        print(f"恭喜您选择了车牌号{choice}")
        exit("Goode Luck")
    else:
        print("重新生成中")
    print("____________________")
太阳马上落山,你们的孩子居然不害怕
最后更新于 2023-12-28