Python:判断元组是否包含偶数的函数?

Python: Function to find out if a tuple contains even numbers?

所以我想要的是一个函数,它从用户那里获取元组输入,然后计算出该元组是否包含偶数。我想知道如何使用 for 或 while 循环来完成它。我试过了,但代码不起作用。我有一些东西,但它不起作用:

def ifEven(x):
    i = -1
    if isinstance(x, tuple):
        while i < len(x):
            for i in x:
                i = i + 1
                if x[i] % 2 == 0:
                    return True
                else:
                    return False 

您应该阅读 Python 中关于 for 语句的文档:https://docs.python.org/2/tutorial/controlflow.html#for-statements

这是一个工作代码:

def ifEven(x):
    if isinstance(x, tuple):
        for i in x:
            if i % 2 == 0:
                return True
    return False

也就是说,可以使用 Python 的生成器表达式将其重写为单行代码:

def isEven(x):
    return any(v % 2 == 0 for v in x)

您的缩进看起来有点不对劲,但这可能就是您的方式 copy/pasted。 True 是 python 中的 "True",而不是 return 函数中的 "true",这也可能会把你搞得一团糟。

for 循环中 i 本身初始化并开始遍历元组。每次迭代时 i 的内容是元组中的元素之一。 让我们更深入地研究一下。让你的元组是 (3, 4, 6, 7) 在第一次迭代中:-

for i in x     # i=3
    i = i+1    # i = 4
    if x[i] %2 == 0 :    # x[4] % 2 == 0  => This will give you IndexError, since there is no index 4 in the tuple x(python uses zero based indexing)

因此您不需要单独递增 i,因为 for 将迭代变量递增到提供的序列的末尾(在您的情况下,它是元组中的最后一个元素 x)

并且由于 i 拥有元组本身的元素,因此通过递增它,您将递增 i 中的值。然后您从元组访问具有递增索引的元素。也就是说,如果元组元素是 3,则首先将其递增 1,因此它变为 4,然后检查元组的第 4 个索引中的元素是否为偶数,即如果x[4]是否偶数。但是由于我考虑过的元组长度为 4,所以它会抛出 IndexError

所以,这里不需要初始化i = -1,不需要使用while,不需要在for循环中递增i。其余解决方案由 Selcuk 给出。