You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:20:28