Python遍历4位小写字母密码匹配后无法终止问题求助
4位小写字母密码遍历程序问题修复
问题根源
- 冗余外层循环导致无限重复遍历:外层
while not done循环会在匹配成功后,重新初始化所有变量并再次启动四层for循环,永远无法真正停止。 - 匹配成功后未终止嵌套循环:即使设置
done=True,四层嵌套for循环仍会继续执行完所有26^4种组合,直到遍历到zzzz才会退出,随后又被外层while循环拉回重新执行。 - 计数逻辑错误:目标密码
aaaa是第一次尝试,但代码仅在不匹配时递增guess_num,导致匹配成功时显示的尝试次数为0,不符合实际尝试次数。
修正代码
import sys my_password = "aaaa" guess_num = 0 # 复用同一个字母列表,无需重复定义 lowercase_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] for a in lowercase_letters: for b in lowercase_letters: for c in lowercase_letters: for d in lowercase_letters: guess_num += 1 current_guess = a + b + c + d print(f"当前尝试:{current_guess},累计尝试次数:{guess_num}") if current_guess == my_password: print(f"找到目标密码!共尝试 {guess_num} 次") # 直接终止程序,停止后续遍历 sys.exit()
修正说明
- 移除无意义的外层
while循环,避免重复遍历所有组合 - 复用单个小写字母列表,减少冗余代码
- 调整计数逻辑,每次尝试先递增计数,确保尝试次数准确
- 匹配成功后使用
sys.exit()直接终止程序,无需继续遍历剩余组合
内容的提问来源于stack exchange,提问作者BroWhat
相关产品推荐
相关产品推荐

