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

Python简易密码程序问题求助:仅首次输对密码才显示‘Access Granted’

修复Python简易密码程序的循环授权问题

嘿,我一眼就瞅出你这个密码程序的问题啦!核心bug在于**condition变量只在程序启动时计算了一次**,之后哪怕你在循环里输入了正确密码,程序也不会更新这个变量的判断结果——它还抱着最开始的False不放,自然不会跳出循环或者显示授权成功。另外提个小细节:你写的"Acces Denied"少了个s,应该是"Access Denied"哦。

原代码的问题拆解

你看,原代码里:

  1. 第一次输入密码后,condition = my_input == password只执行了一次;
  2. 进入while not condition循环后,你输入新的my_input,但完全没更新condition的值,也没直接检查新输入的内容是否匹配密码;
  3. 循环里的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:21