2024-10-02 12:33:05 发布
网友
所以我想要的是一个函数,它从用户那里得到一个元组输入,然后判断这个元组是否包含偶数。我想知道如何用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
在for循环中i本身初始化并开始迭代元组。每次迭代时i的内容是元组中的一个元素。 让我们更深入地了解一下。让你的元组是(3, 4, 6, 7) 在第一次迭代中:
for
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中的最后一个元素)
x
而且由于i拥有元组本身的元素,所以通过增加它,你就增加了i中的值。然后从元组访问索引递增的元素。也就是说,如果元组元素是3,则首先将其递增1,使其成为4,然后检查元组第4个索引中的元素是否偶数,即x[4]是否偶数。但是由于我考虑过的元组是长度为4的,所以它将抛出IndexError
3
4
x[4]
IndexError
所以,这里不需要初始化i = -1,不需要使用while,也不需要在for循环内增加i。其余解由Selcuk给出。在
i = -1
while
您应该阅读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的生成器表达式将其重写为一行代码:
你的缩进看起来有点不对劲,但这可能就是你复制/粘贴的方式。在python中,True是“True”,而不是return函数中的“True”,这也可能会把您搞砸。在
在
for
循环中i
本身初始化并开始迭代元组。每次迭代时i
的内容是元组中的一个元素。 让我们更深入地了解一下。让你的元组是(3, 4, 6, 7)
在第一次迭代中:因此,您不需要单独递增
i
,因为for
将迭代变量增加到所提供序列的末尾(在您的例子中,它是到元组x
中的最后一个元素)而且由于
i
拥有元组本身的元素,所以通过增加它,你就增加了i
中的值。然后从元组访问索引递增的元素。也就是说,如果元组元素是3
,则首先将其递增1,使其成为4
,然后检查元组第4个索引中的元素是否偶数,即x[4]
是否偶数。但是由于我考虑过的元组是长度为4的,所以它将抛出IndexError
所以,这里不需要初始化
i = -1
,不需要使用while
,也不需要在for
循环内增加i
。其余解由Selcuk给出。在您应该阅读Python中关于
for
语句的文档:https://docs.python.org/2/tutorial/controlflow.html#for-statements。在下面是一个工作代码:
也就是说,可以使用Python的生成器表达式将其重写为一行代码:
^{pr2}$你的缩进看起来有点不对劲,但这可能就是你复制/粘贴的方式。在python中,True是“True”,而不是return函数中的“True”,这也可能会把您搞砸。在
相关问题 更多 >
编程相关推荐