问题:如果用户输入单词!='encrypt'或'decrypt',我试图再次调用ask_user(),但输入IS正确时会出现相同的错误消息。
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)
我该如何更改代码来解决此问题?
你的问题是你使用or
而不是and
。如果您考虑如何解释代码:
让我们说,mode="encrypt"
。一步步:
mode != 'encrypt'
评估为false
。到目前为止都很好。
然而,mode != 'decrypt'
对true
进行了评估。这是个问题。
发送给if
的最终表达式为:false or true
。最后,这将评估为true
,导致输入if
块。
将其更改为and
意味着必须检查两个无效模式true
以输入块。
n != 2 or n != 3
永远是真的。如果n
是2
那么它不是3
。所有其他值不是2
。
你打算n != 2 and n != 3
。
你需要使用and
,而不是or
。因为n
将永远不会等于3和4,所以包含if
的or
声明将始终解析为True