问题:如果用户输入单词!='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)
如何更改代码以解决此问题?
答案 0 :(得分:2)
n != 2 or n != 3
将始终为真。如果n
是2
,则不是3
。所有其他值都不是2
。
您打算使用n != 2 and n != 3
。
答案 1 :(得分:2)
您的问题是您使用的是.square
而不是or
。
如果您考虑如何解释代码:
我们说and
。逐步:
mode="encrypt"
的值为mode != 'encrypt'
。到目前为止一切都很好。
false
的取值为mode != 'decrypt'
。这是个问题。
发送到true
的最终表达式将是:if
。最后,这将求值为false or true
,从而导致输入true
块。
将其更改为if
意味着必须and
检查两种无效模式才能输入该块。
答案 2 :(得分:0)
您需要使用and
,而不是or
。因为n
永远不会等于3和4,所以合并了if
的{{1}}语句将始终解析为or