我尝试在此代码中添加验证检查,以便只允许值("A"), ("B") or ("C")
。如果删除len()
部分,则允许使用包含三个字母之一的任何字符串,但如果未使用其中一个字母,则按预期工作。添加len()
时,即使len()
打印正确的值,它似乎也没有效果,只是绕过它。
如何解决此问题?
谢谢!
classCheck = False
studentclass=input("What class are you in?\n A\n B\n C\n ")
print (len(studentclass))
while classCheck != True:
if ("a" or "b" or "c") not in studentclass.lower() and len(studentclass) != 1:
print ("You must enter a valid class")
studentclass=input("What class are you in?\n A\n B\n C\n ")
else:
classCheck = True
答案 0 :(得分:1)
我认为您打算使用if studentclass.lower() not in ["a", "b", "c"]
编辑:如果你想要一个(在这种情况下可以忽略不计)增加速度使用("a", "b", "c")
分配给一个元组比一个列表更快,则每个注释。
答案 1 :(得分:1)
你可以这样做:
classCheck = False
studentclass=input("What class are you in?\n A\n B\n C\n ")
print (len(studentclass))
while classCheck != True:
if studentclass.lower() not in ['a', 'b', 'c']:
print ("You must enter a valid class")
studentclass=input("What class are you in?\n A\n B\n C\n ")
else:
classCheck = True
你的解决方案不起作用,因为Python不会说英语而是Python,所以当你这样做时:
("a" or "b" or "c") not in studentclass.lower()
第一次评估:
("a" or "b" or "c")
哪个返回第一个表达式,每个表达式bool(expr)== True所以这里导致“a”然后Python评估:
"a" not in studentclass.lower()
对于'b'或'c'
是正确的