Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
786 views
in Technique[技术] by (71.8m points)

python - Why doesn't this "is not" if statement work?

This is my code,

if diff != "1" or diff != "2" or diff != "3":
            print("You need to pick either 1, 2 or 3
")

For some reason, the outcome is,

Pick a difficulty:
1) Easy
2) Medium
3) Hard
>> 2
You need to pick either 1, 2 or 3

I want the if statement to check if the variable diff is not equal to strings 1, 2 and 3. But when I put either 1, 2 or 3, the error message for when diff doesn't equal the numbers prints instead. Why does this happen?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

To apply the logic of "not any" you would want to check if it is any of the valid results then invert. (NOR)

if not (diff == "1" or diff == "2" or diff == "3"):

Or applying DeMorgan's theorem this would be equivelent to "not equal to 1 AND not equal to 2 AND not equal to 3"

if diff != "1" and diff != "2" and diff != "3":

of course python also has the in and not in operator which makes this much cleaner:

if diff not in ("1", "2", "3"):

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...