if choice == '1':
print('Your card has been created')
card = create_card()
print(f'Your card number:\n{card}')
pin = int(''.join(f'{random.randint(0, 9)}' for _ in range(4)))
print(f'Your card PIN:\n{pin}\n')
cards.append([card, pin])
请有人能解释一下为什么上面的代码有时会生成3位数字而不是4位数字吗?例如:
按照您的逻辑,可以生成以开头的字符串0
。如果您将前导0数字字符串传递给int()
,则该前导0将被忽略:
print(int("0999"))
999
要解决此问题,您可以更改范围起始值。
pin = int(''.join(f'{random.randint(1, 9)}' for _ in range(4)))
编辑:要向自己证明这一点,请打印生成的字符串和int()
函数的结果,如下所示。
for i in range(100):
st = ''.join(f'{random.randint(0, 9)}' for _ in range(4))
print(st, int(st))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句