10

我以为 elif: 是

else:
     if:

但不可能使用

对于 - elif:

只要

对于 - 否则:如果:

在这段代码中:

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)

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

4

4 回答 4

13

elif:不是扩展为 的宏else: if,它是仅在if:语句的上下文中有效的句法元素。通常,else: if会打开一个新if区块;但是,elif:不这样做。

于 2012-06-11T15:48:17.160 回答
10

for else特例用法,与if elif结构不一样。 无论如何,elif在上下文中并没有真正的意义,因为它的含义是“如果我们在没有中断的情况下完成了循环,就做这件事”。这就是二元逻辑。 在这个二元决策的背景下没有意义。forfor elseelif

于 2012-06-11T15:47:56.003 回答
9

正确的。elsein 也是如此try .. except .. else

于 2012-06-11T15:47:02.640 回答
5

您所指的“else”与“for”命令相关,而不是“if”命令。'elif' 仅在与 'if' 命令一起使用时才有意义。

使用 'for' 命令,只有当 'for' 块没有被 'break' 命令提前结束时,才会执行 'else' 块,参见第 4.4 段

于 2012-06-11T15:50:23.973 回答