对不起,标题太糟糕了,我不知道该怎么形容我的问题。
我正在尝试生成一个包含15个字符的代码。其中7个已经给出,将被称为“基础”。其他8个必须是0到9之间的随机数。
这是我的代码
numList = "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
whatSerial = input("Serial to generate?").upper()
def redmi4A(numList):
return "8655920" + numList + numList + numList + numList + numList + numList + numList + numList + " -> Redmi 4A"
if whatSerial == "4A":
for i in numList:
print(redmi4A(i))
但是输出看起来像这样:
865592011111111 -> Redmi 4A
865592022222222 -> Redmi 4A
865592033333333 -> Redmi 4A
865592044444444 -> Redmi 4A
865592055555555 -> Redmi 4A
865592066666666 -> Redmi 4A
865592077777777 -> Redmi 4A
865592088888888 -> Redmi 4A
865592099999999 -> Redmi 4A
865592000000000 -> Redmi 4A
如您所见,它生成基数+ 11111、2222、3333等。 我希望基数后面的数字能够输出所有可能的解决方案,所以基数后面的数字将是随机的。
答案 0 :(得分:3)
尝试:-
import random
numList = "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
whatSerial = input("Serial to generate?").upper()
def redmi4A(opt):
return "8655920" + "".join([random.choice(numList) for x in range(8)]) + " -> Redmi 4A"
if whatSerial == "4A":
for i in numList:
print(redmi4A(i))
输出:-
865592087748606 -> Redmi 4A
865592065496599 -> Redmi 4A
865592061039159 -> Redmi 4A
865592004047509 -> Redmi 4A
865592089008612 -> Redmi 4A
865592065068787 -> Redmi 4A
865592015446593 -> Redmi 4A
865592095893322 -> Redmi 4A
865592074954808 -> Redmi 4A
865592019366958 -> Redmi 4A
您的代码中也存在一个逻辑错误,在函数redmi4A()
中,参数名称与元组numList
的名称相同,这会导致影子名称问题,并用传递给函数的参数(因为两者都使用相同的名称)。因此,我将变量名称更改为opt
,您可以使用其他名称。
答案 1 :(得分:2)
要生成随机数,请使用random
模块。这是一个如何在0
和9
之间生成随机数的示例:
import random
random_num = random.randint(0, 9)
因此您的代码需要更改为此:
import random
whatSerial = input("Serial to generate?").upper()
def redmi4A():
return "8655920" + ''.join([str(random.randint(0, 9)) for _ in range(8)]) + " -> Redmi 4A" # 8655920 + 8 random digits + " -> Redmi 4A"
if whatSerial == "4A":
for i in range(10):
print(redmi4A())
我希望这会有所帮助。如果不是,请尝试进一步澄清您的问题。