【问题标题】:Creating random numbers with a leading 0 in python 3x在 python 3x 中创建带有前导 0 的随机数
【发布时间】:2015-05-15 04:36:35
【问题描述】:

在 Python 3x 中,有没有一种方法可以生成固定位数的随机数,该随机数可以在第一位或前两位返回 0?例如005059 而不是 559?

我正在创建一个游戏,玩家需要输入一个随机创建的 3 位代码(在游戏的其他地方可以找到)。理想情况下,它将从000 - 999 中选择。

random.randint(0,999) 不会提供我想要的输出。

我能想出的唯一解决方案是冗长的(生成 0 到 9 之间的 3 个数字,转换为字符串并组合),我想知道是否有更直接的方法:

import random

digit1 = str(random.randint(0,9))
digit2 = str(random.randint(0,9))
digit3 = str(random.randint(0,9))

code = digit1 + digit2 + digit3

这种方法可以让我与用户的输入代码进行比较,但如果可能的话,我想直接生成数字。

编辑:为了澄清,我想知道是否有一种方法可以生成一个具有预定位数的数字,该数字可以在一个或多个前导数字中包含“0”,而无需将数字转换为字符串以进行格式化。 Nicest way to pad zeroes to string 有帮助,虽然我没有尝试打印随机数,而是将其与使用输入(例如 '0560')进行比较。

【问题讨论】:

  • 前导零是字符串表示的一部分。只需根据链接问题中的建议填充到 3 个字符即可。
  • 数字没有“数字”。数字的文本表示具有数字。如果您想要 3 位随机数,则只需获取 0 到 999 之间的随机数,并在将它们转换为文本时放入前导零。
  • 好的,谢谢,这回答了我的问题。

标签: python-3.x random


【解决方案1】:

您可以尝试以下方法:

import random

min = 0
max = 999
digits = [str(random.randint(min, max)) for i in range(5)]
digits = [(len(str(max))-len(digit))*'0'+digit for digit in digits]

>>> digits
['099', '142', '684', '881', '734']
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多