我希望生成一个16位字符的代码
该代码已知5个字符 该代码包含3个数字 代码必须是随机的
我的做法:
result1 = "NAA3U" + ''.join((random.choice(string.ascii_uppercase + string.digits) for codenum in range(11)))
我希望生成一个16位字符的代码
该代码已知5个字符 该代码包含3个数字 代码必须是随机的
我的做法:
result1 = "NAA3U" + ''.join((random.choice(string.ascii_uppercase + string.digits) for codenum in range(11)))
一个方法:
import random
import string
# select 2 digits at random
digits = random.choices(string.digits, k=2)
# select 9 uppercase letters at random
letters = random.choices(string.ascii_uppercase, k=9)
# shuffle both letters + digits
sample = random.sample(digits + letters, 11)
result = "NAA3U" + ''.join(sample)
print(result)
输出 示例运行结果
NAA3U6MUGYRZ3DEX
如果代码需要至少包含3位数字,但不限于此阈值,则只需更改为以下行:
# select 11 uppercase letters and digits at random
letters = random.choices(string.ascii_uppercase + string.digits, k=11)
import random
import string
result1 = "NAA3U" + ''.join((random.choice(string.ascii_uppercase) for codenum in range(8))) + str(random.randint(10,99))
print(result1)
NAA3URYWMGIHG45
random.choices
和 random.shuffle
,然后像下面这样使用 ''.join
:>>> import random
>>> import string
>>> def generate_rndm():
... digit_char = random.choices(string.ascii_uppercase, k=9) + random.choices(string.digits, k=2)
... random.shuffle(digit_char)
... return "NAA3U" + ''.join(digit_char)
输出:
>>> generate_rndm()
'NAA3UTVQG8DT8NRM'
>>> generate_rndm()
'NAA3UCYBWCNQ45HR'
>>> generate_rndm()
'NAA3UIJP7W7DLOCQ'