我正在尝试制作密码生成器。我尝试使用for循环生成每个数字。然后我将每个数字附加到列表中。但是,我希望输出类似于:
54324
而不是:
[5, 4, 3, 2, 4]
以下是我的代码:
code = ''
chars = 5
for i in range(chars):
digit = str(randint(0,9))
digit += code
在这种情况下,我的输出只是空白。我对python有些新意,所以我可能会遗漏一些明显的东西,但如果你能解释我做错了什么以及如何修复它,我将不胜感激。
答案 0 :(得分:1)
您的代码每次都会覆盖digit
。您生成0到9之间的随机整数,然后将其转换为字符串。然后,您向此code
字符串添加digit
。然后在for循环的下一次迭代中,为digit
生成一个新值。所以你不应该得到一个空值 - 你应该得到digit
的一位数值,一个0到9之间整数的字符串表示。
您的值应分配并添加到code
,而不是digit
。
code = ''
chars = 5
for i in range(chars):
digit = str(randint(0, 9))
code += digit
print(code)
答案 1 :(得分:1)
除了代码中的明显错误之外,修复它会给你一个表现不佳的代码:
for
循环如果你想生成一个由5个数字组成的密码,因为不需要数字的唯一性(如同这个技术不适用的另一个类似问题所示),你可以生成一个数字< 100000并使用嵌套的format
:
import random
nb_digits = 5
for _ in range(10):
print("{:0{}}".format(random.randrange(0,10**nb_digits),nb_digits))
输出示例:
58260
12986
69233
42343
02760
58934
06396
22262
07662
00182
答案 2 :(得分:1)
更正了代码的版本
from random import randint
code = ''
chars = 5
for i in range(chars):
digit = str(randint(0,9))
code += digit
print(code)
顺便说一下,你可以使用
code = randint(0,99999)
print(code)
生成密码,只需说出
答案 3 :(得分:0)
在每个循环中,您正在删除变量数字包含的先前值,并且变量代码在此处没有用,因为它是空的。
你可以这样做:
chars = 5
for i in range(chars):
digit += str(randint(0,9))
答案 4 :(得分:0)
您试图打印数字这是一位数的随机数,您必须将其附加到其他字符串进行存储
from random import randint
code = ''
chars = 5
for i in range(chars):
digit = str(randint(0,9))
code = code +digit
print(code)
希望这会有所帮助
答案 5 :(得分:0)
由于您要追加到code
,它应该是:
code +=digit