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

