帮助!我的其他条款永远不会执行!
#初学者 #编码 #python #调试

有时人们用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')。

快乐编码!