Python For If-Else

Python For If-Else,python,if-statement,for-loop,Python,If Statement,For Loop,我刚刚意识到这个代码并没有按照我希望的方式工作 for i in [0,2,4]: if i%2==0: print i else: print "There are no EVEN #s" 那么,对这种结构进行编码的最佳方式是什么 如果“if”语句在“for”循环的所有迭代过程中都没有变为true,那么可以运行“else”语句代码。只需在if语句中设置一个标志,以便在for循环完成运行后进行检查 e、 g 只需在if语句中设置一个标志,即可在for循环运行完成

我刚刚意识到这个代码并没有按照我希望的方式工作

for i in [0,2,4]:
    if i%2==0:
        print i
else:
    print "There are no EVEN #s"
那么,对这种结构进行编码的最佳方式是什么


如果“if”语句在“for”循环的所有迭代过程中都没有变为true,那么可以运行“else”语句代码。只需在if语句中设置一个标志,以便在for循环完成运行后进行检查

e、 g


只需在if语句中设置一个标志,即可在for循环运行完成后进行检查

e、 g


代码不能按您希望的方式工作,因为
if
else
不在同一范围级别上。然而,Python中有一个
for…else
语法,您可能正试图使用它。有关这方面的信息,请参阅。要使用
for…else
语法,需要在
for
循环中有一个
break
语句。如果它中断,则不会调用
else
,否则将在循环完成后调用
else

但是,如果没有
break
语句,则
else
始终运行

这是您的代码,已更正:

for i in [0,2,4]:
    if i%2==0:
        print i
        break
else:
    print "There are no EVEN #s"
只要循环遇到偶数,循环就会中断。否则,如果循环将完全执行(即遍历整个列表),则它还将运行
else
。仅供参考,以下是奇数列表上的循环:

for i in [1,3,5]:
    if i%2==0:
        print i
        break
else:
    print "There are no EVEN #s"

代码不能按您希望的方式工作,因为
if
else
不在同一范围级别上。然而,Python中有一个
for…else
语法,您可能正试图使用它。有关这方面的信息,请参阅。要使用
for…else
语法,需要在
for
循环中有一个
break
语句。如果它中断,则不会调用
else
,否则将在循环完成后调用
else

但是,如果没有
break
语句,则
else
始终运行

这是您的代码,已更正:

for i in [0,2,4]:
    if i%2==0:
        print i
        break
else:
    print "There are no EVEN #s"
只要循环遇到偶数,循环就会中断。否则,如果循环将完全执行(即遍历整个列表),则它还将运行
else
。仅供参考,以下是奇数列表上的循环:

for i in [1,3,5]:
    if i%2==0:
        print i
        break
else:
    print "There are no EVEN #s"

如果您只想检查是否存在偶数,而不关心值,请使用:


any
将在找到偶数后延迟计算返回True,如果列表不包含偶数,则延迟计算返回False

如果您只想检查是否存在偶数,而不关心值,请使用:

any
将在找到偶数后延迟计算返回True,如果列表不包含偶数,则延迟计算返回False

我认为一种更“pythonic”的方法是过滤列表,并检查过滤后的列表是否有任何元素来确定要打印的内容:

lst = [0, 2, 4]
filtered = [x for x in lst if x%2 == 0]
if filtered:
    for item in filtered:
        print item
else:
    print "No evens"
我认为一种更“pythonic”的方法是过滤列表,并检查过滤后的列表是否有任何元素来确定要打印的内容:

lst = [0, 2, 4]
filtered = [x for x in lst if x%2 == 0]
if filtered:
    for item in filtered:
        print item
else:
    print "No evens"


如果您从未
break
(或
return
),则
else
始终运行。为了避免
for
循环中出现
else
语句,您需要
break
循环。您需要一个状态变量,它以
False
开头,在条件块中设置为
True
,然后是一个条件
break
。我以前使用过这个逻辑,但出于好奇,有没有其他方法可以使用try,除了catch?或something@Riddler找到第一个偶数时,只需添加一个
break
。当然,还有其他方法可以做到这一点。此外,如果能实际包含您希望代码如何工作,以及它如何工作,这将非常有帮助。您需要实现您的逻辑。一种方法是先计算偶数,然后在循环后检查计数。或者,当找到偶数时,您可以设置标志。如果您从未
break
(或
return
),则
else
始终运行。为了避免
for
循环中出现
else
语句,您需要
中断该循环。您需要一个状态变量,它以
False
开头,在条件块中设置为
True
,然后是一个条件
break
。我以前使用过这个逻辑,但出于好奇,有没有其他方法可以使用try,除了catch?或something@Riddler找到第一个偶数时,只需添加一个
break
。当然,还有其他方法可以做到这一点。此外,如果能实际包含您希望代码如何工作,以及它如何工作,这将非常有帮助。您需要实现您的逻辑。一种方法是先计算偶数,然后在循环后检查计数。或者,当找到偶数时,您可以设置flag。在开始时让
flag=True
,在循环中的
if
语句中设置
flag=False
,可能更符合python,因此,在最后的
if
语句中,您可以使用
if-flag
而不是
if-not-flag
。在开始时让
flag=True
,在循环中的
if
语句中设置
flag=False
,可能会更像python,因此,在最后的
if
语句中,您可以使用
if-flag
而不是
if-not-flag
。这是一个很好的解决方案。@Newb,谢谢,可能不是OP想要的,但这是一个值得学习的好东西,在某个阶段无疑会很有用。是的,它可能不太符合主题,但至少我学到了一些新的东西。这是一个很好的解决方案。@Newb,谢谢,可能不是OP想要的,但这是一件值得学习的好东西,在某个阶段毫无疑问会很有用。是的,这可能不太符合主题,但至少我学到了一些新的东西。