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 给出。
所以我想要的是一个函数,它从用户那里获取元组输入,然后计算出该元组是否包含偶数。我想知道如何使用 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 给出。