我有一个简单的输入验证代码,要求用户输入 ACT 或 SAT。
test=input("Are you taking SAT or ACT?..")
while test!=("SAT" or "ACT"):
print("error")
test=input("Are you taking SAT or ACT?..")
它似乎适用于第 2 行前面的"SAT",但不适用于 ACT!当我在模块中输入 ACT 时,它会打印"错误",就像它是假的一样。我的缺点是什么?逻辑?语法?语义?我能做些什么来修复它?
谢谢。
我认为这种说法是无效的:
test!=("SAT" or "ACT")
您可以使用
test != "SAT" and test != "ACT"
或者使用in
运算符:
test=input("Are you taking SAT or ACT?..")
while test not in ("SAT", "ACT"):
print("error")
test=input("Are you taking SAT or ACT?..")
表达式
("SAT" or "ACT")
的计算结果为"SAT"
,因为它基本上计算两个字符串上的OR
操作。为了解决此问题,您可以执行以下操作:
while(1):
test = input("Are you taking SAT or ACT")
if test in ("SAT", "ACT"):
break
print("Error")
将
条件从test!=("SAT" or "ACT")
test==("SAT" or "ACT")
或者您可以使用Kshitij Saraogi解释的IN
。