Python输入验证?

Python输入验证?,python,user-input,Python,User Input,我有一个简单的输入验证代码,要求用户输入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时,它将打印“error”,就像它是false一样。我的缺点是什么?逻辑?语法?语义

我有一个简单的输入验证代码,要求用户输入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时,它将打印“error”,就像它是false一样。我的缺点是什么?逻辑?语法?语义的?我能做些什么来修复它


谢谢。

我认为这句话不正确:

test!=("SAT" or "ACT")
你可以用

test != "SAT" and test != "ACT"
或在运算符中使用

test=input("Are you taking SAT or ACT?..")
while test not in ("SAT", "ACT"):
    print("error")
    test=input("Are you taking SAT or ACT?..")

我认为这种说法是不正确的:

test!=("SAT" or "ACT")
你可以用

test != "SAT" and test != "ACT"
或在
运算符中使用

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”或“ACT”)
的计算结果为
“SAT”
,因为它基本上对两个字符串的
操作进行计算。为了解决此问题,您可以执行以下操作:

while(1):
    test = input("Are you taking SAT or ACT")
    if test in ("SAT", "ACT"):
        break

    print("Error")
表达式
(“SAT”或“ACT”)
的计算结果为
“SAT”
,因为它基本上对两个字符串的
操作进行计算。为了解决此问题,您可以执行以下操作:

while(1):
    test = input("Are you taking SAT or ACT")
    if test in ("SAT", "ACT"):
        break

    print("Error")

t与
测试中的条件相反=(“SAT”或“ACT”)
测试==(“SAT”或“ACT”)
或者您可以在
中使用
,正如Kshitij Saraogi解释的那样。

测试中的条件相反=(“SAT”或“ACT”)
测试==(“SAT”或“ACT”)
或者您可以在
中使用
,正如Kshitij Saraogi所解释的那样。

该语句完全有效,但不会产生预期的结果。编程语言中的运算符以一种非常简单、定义良好的方式工作。另一方面,这意味着它们不能像在会话语言中那样使用。例如,将此伪代码“if test not a或b”(会话)与“if(test not a)和(test not b)”(strict)进行比较。是的。你是对的。我的意思是“无效”,这句话在这里没有任何用处,因为它没有达到OP想要的效果,而且
“SAT”或“ACT”
总是产生同样的结果,“SAT”。谢谢你,我现在明白了——不管是ACT还是SAT,当我使用“或”.@PupWatthanawong实际上,当你输入“SAT”时,while循环总是正确的
while
循环的条件将计算为
False
,因为
的“SAT”或“ACT”
总是计算为
“SAT”
。该语句完全有效,但不会产生预期的结果。编程语言中的运算符以一种非常简单、定义良好的方式工作。另一方面,这意味着它们不能像在会话语言中那样使用。例如,将此伪代码“if test not a或b”(会话)与“if(test not a)和(test not b)”(strict)进行比较。是的。你是对的。我的意思是“无效”,这句话在这里没有任何用处,因为它没有达到OP想要的效果,而且
“SAT”或“ACT”
总是产生同样的结果,“SAT”。谢谢你,我现在明白了——不管是ACT还是SAT,当我使用“或”.@PupWatthanawong实际上,当你输入“SAT”时,while循环总是正确的
while
循环的条件将计算为
False
,因为
的“SAT”或“ACT”
总是计算为
“SAT”
。使用
不在
操作符将导致较小的更改。另外,如果为True:
,则不需要在
中使用括号。使用
not in
操作符可以进行较小的更改。另外,如果为True:
,则在
中不需要括号。