Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python for-else vs for elif_Python_For Loop_Python 2.7_If Statement - Fatal编程技术网

Python for-else vs for elif

Python for-else vs for elif,python,for-loop,python-2.7,if-statement,Python,For Loop,Python 2.7,If Statement,我以为伊里夫:是 else: if: 但这是不可能使用的 对于-elif: 只有 for-else:如果: 在此代码中: for line in source: change_next = False for dataset,artnr,revision in datasets: if dataset in line: change_next = True print " ** " + dataset

我以为伊里夫:是

else:
     if:
但这是不可能使用的

对于-elif:

只有

for-else:如果:

在此代码中:

for line in source:
    change_next = False
    for dataset,artnr,revision in datasets:
        if dataset in line:
            change_next = True
            print "  **  " + dataset + " found"
            datasets.remove((dataset,artnr,revision))
            break
    else:
        if line.startswith("DstID:"):
            print line.replace("DstID:","").rstrip()

    if change_next and "Partno:" in line:
        destination.write("Partno: " + artnr + "\n")
        print "Partno: " + artnr
    elif change_next and "Revno:" in line:
        destination.write("Revno:" + revision + "\n")
        print "Revno:" + revision
    else:
        destination.write(line)

谢谢你到目前为止的回复,我现在的问题是:这样做吗?如果一行中没有任何(已知)数据集,那么如果它是数据集,我想打印它?

正确。这同样适用于
try中的
else
。。除了else

是一种特殊情况用法,与结构不同
elif
for
的上下文中没有任何意义,因为
for
else
的含义是“如果我们完成了循环而没有中断,就做这件事”。这是二进制逻辑
elif
在这个二进制决策的上下文中没有意义。

elif:
不是一个扩展到
的宏,否则:如果
,它是一个语法元素,仅在一个二进制决策的上下文中有效。通常,
else:if
将打开一个新的
if
块;但是,
elif:
不会这样做。

您引用的“else”与“for”命令绑定,而不是与“if”命令绑定elif'仅在与'if'命令一起使用时才有意义


对于“for”命令,“else”块只有在“for”块没有被“break”命令过早结束时才被执行,请参见。

我编写Python大约7年了,我从来都不知道
for
语句中的
else
子句…@AndrewJaffe:这是可以理解的。它不是特别有用。我想我只使用过几次。@JoelCornett我一直都在使用它。这是幸运的,因为否则我们不能在一个
if
语句中包含多个
elif
子句,这太糟糕了!(…我想除非后续的扩展到越来越缩进的
,否则:如果
块,这会很奇怪…哇,我现在需要漂白我的大脑。)但是在
之后有
elif
是有意义的,对吗?对我来说,我们可以为……做
。。。else
,但对于。。。埃利夫。。。埃利夫。。。。。。。。。。。否则
似乎不一致。在
后面加上
elif
有什么意义?循环后的
else
if
做的事情不一样(这让人困惑)。还有
while
else
,但它的使用频率甚至比
for
else
@MRAB
elif
中没有上下文意义,而
else
中也没有上下文意义。或者在
中尝试
除了
其他
。关键是
elif
在这些上下文中不存在,因为它在逻辑上没有意义。对我来说
elif
中对。。。埃利夫。。。else
上下文。将其视为等同于。。。否则如果。。。else
。有什么是没有意义的?我知道python语法不允许这样做。我是说,从语义上讲,它是有意义的。