【发布时间】:2019-08-15 01:03:11
【问题描述】:
问题:如果用户输入单词 != 'encrypt' 或 'decrypt',我会尝试再次调用 ask_user(),但输入正确时会出现相同的错误消息。
def ask_user():
while True:
mode = input("Would you like to encrypt or decrypt: ")
if mode != 'encrypt' or mode != 'decrypt':
print("Please retry; you must type lowercase. \n")
ask_user()
else:
message = input("Enter your message: ")
似乎在同一行上使用多个 != 语句并不像我想象的那样工作:
# test to support above observ.
for n in range(4):
if n != 2 or n != 3:
print('me')
else:
print(n)
我应该如何更改代码来解决这个问题?
【问题讨论】:
-
mode not in ('encrypt', 'decrypt') -
问题是,如果
n实际上被提供了值2,那么n!=3就变为真了!如果n提供值为3,则n!=2变为真!不可能让这两个条件一起导致错误! (tl;dr with negation,你真的需要考虑条件句在or下的行为) -
@tripleee 我认为这不能回答问题。 OP 显然对布尔逻辑感到困惑;他们并不是真的询问如何实现多个条件。
-
@tripleee 哦,拜托,我不是要一个涉及 for 循环的“高效”解决方案——这对我来说似乎效率不高......
标签: python comparison equality boolean-logic