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

Python随机密码生成器额外输出随机字符串问题排查

问题根因

你看到的11位密码下方的多余长串字符,是代码两处逻辑错误共同导致的:

  • generate()函数中,你给generated_pwd赋的初始值是string.ascii_letters,这个常量本身就是包含全部大小写英文字母的长字符串,不是你生成的11位随机密码
  • 你在generate()函数内打印完11位随机密码后,没有把这个11位密码存为返回值,反而把全量字母组成的常量返回了
  • 回到add()函数调用generate()后,你又主动打印了返回的全量字母常量,还拼接字符串再打了一次,这串多余内容就是这么来的。
修复后的完整代码
import string
import random

def generate():
    char_source = string.ascii_letters
    print("Generating...\n")
    # 先生成11位密码,存为变量
    generated_pwd = ''.join(random.choice(char_source) for i in range(11))
    print(f"Your randomly generated key is: {generated_pwd}")
    # 返回实际生成的11位密码,而非全量字符集
    return generated_pwd

def add():
    username = input("What is your username: ")
    pwd = input("What is password: (for random, type 'generate') ")
    if pwd == 'generate':
        generated_pwd = generate()
        pwd = generated_pwd
        # 不需要重复提示密码的话可以删掉下一行,避免重复输出
        # print("your password is " + pwd)
        return generated_pwd

if __name__ == "__main__":
    add()
核心修改点
  • 调整generate()内的赋值逻辑:把生成的11位随机密码赋值给generated_pwd作为返回值,不再返回全量字符常量
  • 删除add()函数中多余的print(generated_pwd)语句,避免无意义输出
  • 修正了用户名输入提示的拼写错误
  • 可选:如果不需要二次提示密码,注释掉add()中最后一行打印密码的代码即可,程序只会输出一次生成的11位密码,符合你的预期。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:51:56