python if / else逻辑解释请

时间:2017-05-01 22:09:08

标签: python if-statement

我对Python有一个非常基本的if / else逻辑问题。本书中的练习要求我编写一个函数,该函数采用整数列表,如果列表包含所有偶数,则返回True;如果不包含,则返回False。

我写道:

list1 = [8,0,-2,4,-6,10]
list2 = [8,0,-1,4,-6,10]
def allEven(list):
    for x in list:
        if x % 2 != 0:
            return False
        else:
            return True

此代码始终返回True。这是为什么?代码在循环中是否在列表的所有值中都看到-1并返回False?

list1 = [8,0,-2,4,-6,10]
list2 = [8,0,-1,4,-6,10]
def allEven(list):
    for x in list:
        if x % 2 != 0:
            return False
    return True

这本书给出了答案。为什么这个工作而我的工作没有?

3 个答案:

答案 0 :(得分:1)

支付密切关注else所在的位置。压痕和嵌套在这里很重要!

在第一个示例中,它会在满足您条件的第一个元素上返回True,因为您的第一个if检查失败。

在第二个示例中,在迭代完所有元素并且尚未生成返回值之后,它将返回True

答案 1 :(得分:0)

第一个函数仅检查第一个数字,因为它会在for循环开始后立即返回。

顺便说一下,你可以但不应该使用list作为参数或变量名,因为它是一个关键字。

答案 2 :(得分:0)

我强烈建议在两个return语句之前将print语句写入输出x。它将帮助您了解代码的流程。

简短的回答是,代码只检查第一个元素,函数根据该值返回True或False。

在书籍解决方案中,任何失败都会导致返回False,但循环只会继续。只有在没有失败的情况下检查所有元素时,才会返回True。