while循环即使条件正确也不会结束

2024-05-23 14:21:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个登录系统。它要求用户回答问题(“你已经有账户了吗?”)虽然答案不是“是”还是“否”,但它应该继续询问。在

print('Welcome to the quiz!')
print('Do you already have an account? ')
have_acc = input()
while have_acc != ('Yes') or have_acc != ('No') or have_acc != ('yes') or have_acc != ('no'):
    print('Please enter Yes or No')
    have_acc = input()

输出

^{pr2}$

Tags: orthetono答案用户input系统
3条回答

您的while-循环条件是有缺陷的,比如说我输入Yes,它将从左到右计算条件并注意have_acc != ('Yes'),但是由于它前面有一个or关键字,它将计算其余条件——如果其中一个是True,那么它将在while循环中运行代码,这里的问题是have_acc != ('No')将计算为True('Yes' != 'No') == True,因此整个语句的求值将为True,然后在循环中执行代码。在

你需要做的是一个更干净、更简约的版本,它不容易出错,比如:

print('Welcome to the quiz!')
print('Do you already have an account? ')
have_acc = input().lower()

while have_acc not in ('yes', 'no'):
    print('Please enter "yes" or "no"')
    have_acc = input().lower()
...

更规范的方法:

while input.lower() not in ('yes', 'no',):
    ... your retry code ...

问题出在逻辑上。“是的”!='否',因此其中一个条件将始终被满足。我不熟悉python语法,从逻辑上讲,您需要的是:

while not (input == ‘Yes’ or input == ‘No’)

在这一点上,任何一场比赛都是好的

相关问题 更多 >