Hier ist eine andere Art, darüber nachzudenken:
Angenommen, Sie haben zwei spezifische Bedingungen, unter denen eine if / else-Catchall-Struktur nicht ausreicht:
Beispiel:
Ich habe ein 3 x 3 Tic-Tac-Toe-Brett und möchte die Koordinaten beider Diagonalen und nicht der restlichen Quadrate drucken.
Ich entscheide mich stattdessen für und if / elif Struktur zu verwenden ...
for row in range(3):
for col in range(3):
if row == col:
print('diagonal1', '(%s, %s)' % (i, j))
elif col == 2 - row:
print('\t' * 6 + 'diagonal2', '(%s, %s)' % (i, j))
Die Ausgabe ist:
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Aber warte! Ich wollte alle drei Koordinaten von diagonal2 einbeziehen, da (1, 1) auch Teil von diagonal 2 ist.
Das 'elif' verursachte eine Abhängigkeit vom 'if', so dass, wenn das ursprüngliche 'if' erfüllt war, das 'elif' nicht initiiert wird, selbst wenn die 'elif'-Logik die Bedingung ebenfalls erfüllt.
Lassen Sie uns stattdessen das zweite 'elif' in ein 'if' ändern.
for row in range(3):
for col in range(3):
if row == col:
print('diagonal1', '(%s, %s)' % (i, j))
if col == 2 - row:
print('\t' * 6 + 'diagonal2', '(%s, %s)' % (i, j))
Ich erhalte jetzt die Ausgabe, die ich wollte, weil sich die beiden 'if'-Anweisungen gegenseitig ausschließen.
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Wenn Sie letztendlich wissen, welche Art oder welches Ergebnis Sie erzielen möchten, bestimmen Sie, welche Art von bedingter Beziehung / Struktur Sie codieren.