我一直在制作一个非常简单的程序,询问用户是否喜欢苹果或橙子.如果用户写苹果,您将收到消息"您更喜欢苹果",反之亦然.如果用户未能写"苹果"或"橙子",则会提示他们再次执行此操作.
然而,出于某种原因,无论用户是写"苹果"还是"橙子",它仍然会提示他们再次写回答.这是一个例子.
这是我的代码:
question = input('Do you prefer apples or oranges? ').lower()
while question!='apples' or question!='oranges':
question = input('Do you prefer apples or oranges? ').lower()
print('You prefer ' + question)
Run Code Online (Sandbox Code Playgroud)
你的问题重复,只要它是真实的疑问,answer是不是等于'apples' 或它是真的,answer是不是 'oranges'.如果你回答苹果,那么它确实answer不等于'oranges'那么,所以循环重复.一个显而易见的解决方案来改变or对and.
然而,一个更加pythonic的解决方案是使用not in具有set字面值的运算符; (你也不需要在input这里重复).从而:
answer = None
while answer not in {'apples', 'oranges'}:
answer = input('Do you prefer apples or oranges? ').lower()
Run Code Online (Sandbox Code Playgroud)
(PS我重命名了你的变量,因为你input作为参数提供的文本是问题,并input返回该问题的答案.)