Validation 为什么这会卡在一个恒定的循环中?
我不明白为什么这样不行:Validation 为什么这会卡在一个恒定的循环中?,validation,loops,python-3.x,while-loop,uppercase,Validation,Loops,Python 3.x,While Loop,Uppercase,我不明白为什么这样不行: EntryRow=input(“您想预订哪一行?”) Upper=EntryRow.Upper() 而上A'或'B'或'C'或'D'或'E': 打印(“这不是一行”) EntryRow=input(“您想预订哪一行?”) Upper=EntryRow.Upper() 您需要明确完整地写出每个条件,并使用和组合它们: while Upper != 'A' and Upper != 'B' and ... 解释器将'B'和'C'等视为独立的条件,所有条件的计算结果均为Tr
EntryRow=input(“您想预订哪一行?”)
Upper=EntryRow.Upper()
而上A'或'B'或'C'或'D'或'E':
打印(“这不是一行”)
EntryRow=input(“您想预订哪一行?”)
Upper=EntryRow.Upper()
您需要明确完整地写出每个条件,并使用和
组合它们:
while Upper != 'A' and Upper != 'B' and ...
解释器将
'B'
和'C'
等视为独立的条件,所有条件的计算结果均为True
,因此您的if
语句始终为True。您需要明确完整地写出每个条件,并使用和组合它们:
while Upper != 'A' and Upper != 'B' and ...
解释器将'B'
和'C'
等视为独立的条件,它们的计算结果均为True
,因此您的if
语句始终为True。您使用的是或错误的方式。(有关正确的方法,请参见)
一种可能的快捷方式是使用安全壳检查:
while Upper not in ('A', 'B', 'C', 'D', 'E'):
...
您正在以错误的方式使用或。(有关正确的方法,请参见)
一种可能的快捷方式是使用安全壳检查:
while Upper not in ('A', 'B', 'C', 'D', 'E'):
...
“!=”优先于“或”。您的代码真正做的是:
while (Upper != 'A') or 'B' or 'C' or 'D' or 'E':
这总是正确的
请尝试以下方法:
while not Upper in ( 'A', 'B', 'C', 'D', 'E' ):
“!=”优先于“或”。您的代码真正做的是:
while (Upper != 'A') or 'B' or 'C' or 'D' or 'E':
这总是正确的
请尝试以下方法:
while not Upper in ( 'A', 'B', 'C', 'D', 'E' ):
我不是python程序员,但是你的代码没有办法跳出循环。如果用户没有键入有效的密钥,那么您只是在提示并继续循环。如果entryrow不等于您的while中的某个值,您可能会将loop@Ninja_Noob:退出循环的方法是在while
语句中。如果你不懂这门语言,你怎么能提供好的建议呢?伊森。。。你说得对我只是在看代码。。。你只需要理解逻辑就能解决这个问题。代码是说如果它不等于a、b或c。。。。如果它等于a,那么它就不等于b。我认为你需要用ands替换or。Ethan如果你是程序员,逻辑就是逻辑,不管语言如何。我不是python程序员,但你的代码没有办法跳出循环。如果用户没有键入有效的密钥,那么您只是在提示并继续循环。如果entryrow不等于您的while中的某个值,您可能会将loop@Ninja_Noob:退出循环的方法是在while
语句中。如果你不懂这门语言,你怎么能提供好的建议呢?伊森。。。你说得对我只是在看代码。。。你只需要理解逻辑就能解决这个问题。代码是说如果它不等于a、b或c。。。。如果它等于a,那么它就不等于b。我认为你需要用ands替换or。Ethan如果你是程序员,逻辑就是逻辑,不管语言如何。