Python密码生成程序多密码仅写入单个的问题修复咨询
问题修复方案
你的代码问题出在没有保存所有生成的密码:每次for循环都会覆盖contra变量,最后只保留了第10个生成的密码,写入文件时自然只会写入这一个。如果要把每次生成的10个密码都完整写入文件,需要先把所有密码收集起来,再统一写入。
修复后的完整代码
import random, sys Simbolo = "*><@&%$#" letra_mayuscula = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" numeros = "1234567890" letra_minuscula = letra_mayuscula.lower() mayus, minus, nums, sim = True, True, True, False caracteres_disponibles = "" if mayus: caracteres_disponibles += letra_mayuscula if minus: caracteres_disponibles += letra_minuscula if nums: caracteres_disponibles += numeros if sim: caracteres_disponibles += Simbolo largo = 20 cantidad = 10 while True: # 用列表保存所有生成的密码,避免被覆盖 contrasenas = [] for _ in range(cantidad): contra = "".join(random.sample(caracteres_disponibles, largo)) print(contra) contrasenas.append(contra) # 将所有密码拼接成每行一个的格式 texto_a_escribir = "\n".join(contrasenas) + "\n" parar = input().lower() with open("prueba.txt", "a") as file: file.write(texto_a_escribir) if parar == "s": sys.exit()
关键修改点
- 新增
contrasenas列表,在for循环中把每个生成的密码添加进去,避免单变量被循环覆盖 - 用
"\n".join(contrasenas)把列表里的所有密码拼接成每行一个的字符串,再写入文件 - 优化了变量命名(比如把
contraseña改成caracteres_disponibles),让代码逻辑更清晰 - 把
while 1 == 1替换为更规范的while True
这样每次执行循环时,生成的10个密码都会被完整写入文件,不会只保留最后一个。
内容的提问来源于stack exchange,提问作者Pafo
相关产品推荐
相关产品推荐

