为什么这个随机生成器有时返回3位而不是4位?

BirbCS
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

64位随机生成器的种子

为什么生成器没有返回任何值?

为什么这个随机字符串生成器的性能如此差?

为什么这个随机生成器总是输出相同的数字

为什么在此电源集生成器中需要按位运算符?

Javascript-如何从长度有时不是固定的随机字符串中获取3位数字?

为什么 next() 有时会在生成器上隐式调用?

C语言的3位数字生成器

为什么我的随机数生成器返回负值

C#-生成最多3位数字的随机用户名有时会输入4位数字

人们为什么说使用随机数生成器时存在模偏差?

为什么RStudio在View期间调用随机生成器?

缓慢的随机种子生成器-为什么?

为什么从伪随机数生成器中只有0.000000?

数据库查询生成器有时会返回数组,而不是将对象作为排队作业运行

在oracle中生成6位唯一随机数生成器序列

为什么生成器是详尽无遗的,而列表/元组不是?

在生成器上使用扩展语法时,为什么不检索返回值

为什么生成器列表只返回最后一个生成器的元素?

C随机数生成器有时会生成相同的数字

为什么这种理解会返回生成器?

生成器为什么不返回以下值?

无法返回生成器实例。为什么?

用生成器定义 `fac`。并且:为什么生成器没有堆栈溢出?

为什么有时我们使用特定的位进行模板测试?

为什么 d3 行生成器在往返 0 或两者时失败

为什么在再次为生成器设置变量后为生成器设置变量?(这个案例不同于普通的生成器示例)

我在这个随机数生成器中缺少什么

生成一个小于4位数字的随机数,但它具有1位,2位或3位数字的概率相等