Python简易密码程序问题求助:仅首次输对密码才显示‘Access Granted’
修复Python简易密码程序的循环授权问题
嘿,我一眼就瞅出你这个密码程序的问题啦!核心bug在于**condition变量只在程序启动时计算了一次**,之后哪怕你在循环里输入了正确密码,程序也不会更新这个变量的判断结果——它还抱着最开始的False不放,自然不会跳出循环或者显示授权成功。另外提个小细节:你写的"Acces Denied"少了个s,应该是"Access Denied"哦。
原代码的问题拆解
你看,原代码里:
- 第一次输入密码后,
condition = my_input == password只执行了一次; - 进入
while not condition循环后,你输入新的my_input,但完全没更新condition的值,也没直接检查新输入的内容是否匹配密码; - 循环里的
if condition永远是False,所以永远不会触发print("Access granted")。
修复后的代码(两种方案)
方案1:修正原逻辑,更新condition变量
这种方案尽量保留你原来的代码结构,只补全关键的更新步骤:
password = "secret1379" # 第一次密码请求,直接转小写 my_input = input("Secret password request : ").lower() condition = my_input == password if condition: print("Access granted") while not condition: # 每次重试时输入并转小写,同时更新condition变量 my_input = input("Access Denied, try again : ").lower() condition = my_input == password if condition: print("Access granted")
方案2:更简洁的无限循环写法
这种写法逻辑更直观,用无限循环持续请求输入,直到密码正确就跳出:
password = "secret1379" while True: user_input = input("Secret password request : ").lower() if user_input == password: print("Access granted") break # 密码正确,直接跳出循环 print("Access Denied, try again : ")
为什么这样能解决问题?
两种方案都保证了每次输入新密码后,都会重新检查是否与正确密码匹配:
- 方案1每次循环都更新
condition的值,让程序能感知到密码输入正确的变化; - 方案2直接在循环内判断输入内容,匹配就立即跳出循环,逻辑更清晰。
内容的提问来源于stack exchange,提问作者Dominik Podlipniak
相关产品推荐
相关产品推荐

