while循环不断重复python

Dav*_*ade 0 python while-loop

我一直在制作一个非常简单的程序,询问用户是否喜欢苹果或橙子.如果用户写苹果,您将收到消息"您更喜欢苹果",反之亦然.如果用户未能写"苹果"或"橙子",则会提示他们再次执行此操作.

然而,出于某种原因,无论用户是写"苹果"还是"橙子",它仍然会提示他们再次写回答.这是一个例子.

这是我的代码:

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)

Ant*_*ala 5

你的问题重复,只要它是真实的疑问,answer不是等于'apples' 它是真的,answer不是 'oranges'.如果你回答苹果,那么它确实answer不等于'oranges'那么,所以循环重复.一个显而易见的解决方案来改变orand.

然而,一个更加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返回该问题的答案.)