我该如何修复这个python循环?

use*_*042 0 python python-3.x

outcome=input("higher or lower")

while (outcome!= 'h' or outcome!= 'l'): 
    outcome=input("enter h or l")

print("its working")
Run Code Online (Sandbox Code Playgroud)

即使我写H或L,while循环仍然继续

pax*_*blo 6

你需要and而不是or.

让我们假设小写/大写问题不是问题而你输入h而不是H.

那么你的表达将是:

'h' != 'h' or 'h' != 'l'
\________/    \________/
   false   or    true
   \________________/
         true
Run Code Online (Sandbox Code Playgroud)

由于一个物体不能同时是两件事,其中一个不等式必须是真的.因此整个表达必须是真的.

因此,您应该将其更改为:

while (outcome != 'h') and (outcome != 'l'):
Run Code Online (Sandbox Code Playgroud)

要么:

while outcome not in ('h', 'l'):
Run Code Online (Sandbox Code Playgroud)

随着可能性的增加,后者更加简洁:

while outcome not in ('n', 's', 'e', 'w', 'u', 'd', 'l', 'r'):
Run Code Online (Sandbox Code Playgroud)

  • 另一个选择:`结果不在('h','l'):` (2认同)