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

PyCharm检测无报错但运行无输出,Python随机密码生成脚本死循环问题

问题原因
  • 最核心的死循环问题来自内层循环的判断逻辑错误:while password != length 中,password 是字符串类型,length 是你输入的整数类型,两种不同类型的值永远不可能相等,导致内层循环会无限执行,不断往password后拼接字符,永远无法进入打印密码的逻辑,所以程序无输出也不会自动终止,你手动停止时就会触发KeyboardInterrupt报错。
  • 代码还缺失random模块的导入语句,你调用了random.choice却没有提前导入模块,就算解决死循环问题也会触发模块未找到的报错。
修复方案
  1. 在代码开头添加import random导入依赖模块
  2. 将内层循环的判断条件修改为判断密码字符串的长度是否等于要求的长度,把while password != length 替换为 while len(password) != length
  3. 新增判断逻辑避免用户所有字符规则都选no,导致Possible_chars为空的情况,防止random.choice报错。

修复后的完整代码如下:

import random

Uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Lowercase = "abcdefghijklmnopqrstuvwxyz"
Numbers = "0123456789"
Symbols = "!@#$%^&*"

length = int(input("how long would you like your password? : "))
amount = int(input("how many passwords would you like? : "))
Possible_chars = ""
Q_Uppercase = input("Would you like uppercase characters in your password? : ").lower()
if Q_Uppercase == "yes":
    Possible_chars += Uppercase
Q_Lowercase = input("Would you like lowercase characters in your password? : ").lower()
if Q_Lowercase == "yes":
    Possible_chars += Lowercase
Q_Numbers = input("Would you like numbers in your password? : ").lower()
if Q_Numbers == "yes":
    Possible_chars += Numbers
Q_Symbols = input("Would you like symbols in your password? : ").lower()
if Q_Symbols == "yes":
    Possible_chars += Symbols

# 空字符集校验
if not Possible_chars:
    print("你至少需要选择一种字符类型用于生成密码")
    exit()

i = 0
while i < amount:
    password = ""
    # 修改为判断字符串长度
    while len(password) != length:
        password_char = random.choice(Possible_chars)
        password = password + password_char
    print(password)
    i += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:06:03