首页 > 解决方案 > for循环中的空变量

问题描述

我有这个完全正常的单线。

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 循环时变量为空?

标签: pythonpython-3.xfor-looprandom

解决方案


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

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

return "".join(password)

推荐阅读