python - 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 循环时变量为空?
解决方案
字符串是不可变的,因此password.join
返回一个字符串但不将其保存到密码中。相反,您应该将字符串保存在列表中并在最后加入它们:
password = []
for i in range(pwd):
password.append(random.choice(ascii_letters + digits)
return "".join(password)
推荐阅读
- java - 消除数组中的重复项
- json - jsonschema:使用特定键验证字典列表
- throttling - Laravel 6:油门密码重置
- python - pandas - 多个删除,重命名和之间的有效应用程序?
- node.js - 如何在 URL 中传递 MongoDB 集合内的文档的 objectID?
- azure-lab-services - Azure 实验室服务:模板中有多个 VM?
- elasticsearch - 内部对象之间的 Elasticsearch 查询时间戳差异
- string - 比较字符串和数字的方法
- dart - 如何从特定索引的列表中获取项目?
- sql - 选择查询以使用 BigQuery 对输出 json 中的记录进行分组