Python - 将字符添加到字符串

时间:2017-06-03 08:07:51

标签: python string

我正在尝试制作密码生成器。我尝试使用for循环生成每个数字。然后我将每个数字附加到列表中。但是,我希望输出类似于:

54324

而不是:

[5, 4, 3, 2, 4]

以下是我的代码:

    code = ''
    chars = 5
    for i in range(chars):
        digit = str(randint(0,9))
        digit += code

在这种情况下,我的输出只是空白。我对python有些新意,所以我可能会遗漏一些明显的东西,但如果你能解释我做错了什么以及如何修复它,我将不胜感激。

6 个答案:

答案 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次调用随机生成器
  • 从int到string的5次转换
  • 字符串连接

如果你想生成一个由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