10

elif:はの省略形だと思いました

else:
     if:

しかし、使用することはできません

for --elif:

それだけ

for --else:if:

このコードでは:

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: ififelif:

于 2012-06-11T15:48:17.160 に答える
10

これfor elseは特殊なケースの使用法であり、構造と同じではありませんif elif。 とにかく、の意味は「ループを中断せずに完了した場合は、このことを実行する」でelifあるため、実際には意味がありません。それがブール論理です。 この二者択一の決定の文脈では意味がありません。forfor elseelif

于 2012-06-11T15:47:56.003 に答える
9

正しい。同じことがで当てはまりelseますtry .. except .. else

于 2012-06-11T15:47:02.640 に答える
5

参照する「else」は、「if」コマンドではなく、「for」コマンドに関連付けられています。「elif」は、「if」コマンドとともに使用した場合にのみ意味があります。

'for'コマンドを使用すると、'for'ブロックが'break'コマンドによって途中で終了しない場合にのみ'else'ブロックが実行されます。4.4項を参照してください。

于 2012-06-11T15:50:23.973 に答える