用于If Els的Python

2024-03-28 12:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚意识到这段代码并没有像我希望的那样工作。。。在

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

那么,编码这种结构的最佳方式是什么

这样做的目的是,如果“if”语句在“for”循环的所有迭代中都不为真,则运行“else”语句代码


Tags: no代码in编码forif方式语句
3条回答

由于if和{}不在同一级别的作用域中,代码无法按您的意愿工作。但是,在Python中有一个for...else语法,您可能正试图使用它。有关这方面的信息,请参见here。要使用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。以下是奇数列表上的循环,仅供参考:

^{pr2}$

只需在if语句中设置一个标志,以便在for循环运行完毕后进行检查。在

例如

flag = False
for i in [0,2,4]:
    if i%2==0:
        print i
        flag = True

if not flag:
    print "There is an ODD #"

我认为更“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"

相关问题 更多 >