有时人们用if/else语句编写代码,但是其他语句永远不会执行,无论他们在条件下要检查什么。
让我们考虑此类情况的两个例子。
我将使用python说明点。
方案1:如果A或B
user_answer = input("Do you want to continue? y/n: ")
if user_answer == "y" or "Y":
print("You chose 'Yes.'")
else:
print("You chose 'No.'")
此代码的输出将始终为“您选择'是'。”
这是为什么?因为“ y”评估为true。
任何非空字符串都会评估为true。
此外,列表,元组,集合或词典等非空容器也将评估为true。
对于非零数字也是如此。
您可以使用以下代码进行测试:
my_variable = ""
if my_variable:
print("It is True")
else:
print("It is False")
my_variable = 1
if my_variable:
print("1 is True")
else:
print("1 is False")
my_variable = 0
if my_variable:
print("0 is True")
else:
print("0 is False")
my_variable = [] #empty list
if my_variable:
print("[] is True")
else:
print("[] is False")
my_variable = [0] # list with an element
if my_variable:
print("[0] is True")
else:
print("[0] is False")
所以,回到我们的代码。我们如何修复它?
解决方案很简单:我们全面写下条件,如下:
if user_answer == "y" or user_answer == "Y":
print("You chose 'Yes.'")
else:
print("You chose 'No.'")
我们的程序现在将检查我们的状况并按照预期的方式行事。
方案2:如果不是或不可以
考虑以下代码:
user_answer = input("Do you want to continue? y/n: ")
if user_answer != "n" or user_answer != "N":
print("You chose 'Yes.'")
else:
print("You chose 'No.'")
此代码的输出将始终为“您选择'是'。”
为什么是?
为了易于参考,让我们命名条件如下:
我们将调用 user_answer!=“ n” 条件a,我们将调用 user_answer!=“ n” 条件b。
现在,由于我们使用或运算符,因此IF语句只需要对两个条件中的一个条件中的一个,才能评估为true。
因此,如果只有条件a是真实的,那么这足以使if是正确的。
同样,如果仅条件b为真,则足以使if为true。
问题是,无论用户_answer是什么,至少有一个条件是正确的。
如果user_answer为“ n”,那么它不是“ n”,所以条件B是正确的。
如果user_answer为“ n”,那么它不是“ n”,所以条件a是正确的。
如果USER_ANSWER是两个选项之一,则另一个条件为TRUE。
如果User_answer为“ 74”,那么它不是“ n”,所以条件A是正确的,条件B也为真。
因此,在上面的示例中,if语句将始终是正确的,任何其他或ELIF语句将永远不会执行。
我们如何解决这个问题?好吧,这取决于您程序的实际逻辑。一个简单的解决方案是替换“或“用”和“”如下:
user_answer = input("Do you want to continue? y/n: ")
if user_answer != "n" and user_answer != "N":
print("You chose 'Yes.'")
else:
print("You chose 'No.'")
这意味着只有当User_answer不是“ n”而不是“ n”
的情况下,if条件才会是正确的
如果User_answer为“ n”,则条件a变为false,因此整个语句变为false(因为它使用'and')。
快乐编码!