【问题标题】:Empty variable in for-loopfor循环中的空变量
【发布时间】:2019-01-22 21:48:31
【问题描述】:

我有这个完全可以正常工作的单线。

import random
from string import ascii_letters, digits

def pwd_generator(pwd):

    password = "".join([random.choice(ascii_letters + digits) for i in range(pwd)])
    print(password)

我现在想把它翻译成一个“正常”的 for 循环。

def pwd_generator(pwd):
    password = ''
    for i in range(pwd):
        password.join([random.choice(ascii_letters + digits)])

    print(password)

然而,在这种情况下,password 是空的。

当我尝试将变量写入“正确”的 for 循环时,为什么它是空的?

【问题讨论】:

  • 你在做两件不同的事情。 join 返回一个值,而在第二个示例中你什么也没做。
  • 你没有分配值从 join 到任何东西 - 所以它的回报丢失了......

标签: python python-3.x for-loop random


【解决方案1】:

字符串是不可变的,因此password.join 返回一个字符串,但不会将其保存到密码中。相反,您应该将字符串保存在列表中并在最后加入它们:

password = []
for i in range(pwd):
    password.append(random.choice(ascii_letters + digits)

return "".join(password)

【讨论】:

  • 谢谢,成功了。我首先尝试追加字符串,或将其加入列表但不追加到列表。
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 2021-12-22
相关资源
最近更新 更多