Programmierkurs
für Naturwissenschaftler/innen

Sonstige Themen

Hier erkläre ich einige Dinge, die ich bisher noch nicht (genau) erklärt habe.

Verkettung von Zeilen

Wenn eine Zeile lang ist, kann es sinnvoll sein, sie in mehrere Zeilen aufzuteilen. In solchen Fällen kann \ verwendet werden. Setzen Sie keinen Zeichen nach \. (Beachten Sie insbesondere, dass Sie keine Leerzeichen nach \ einfügen.)

summation = 1 + 2 + 3 + 4 + 5 \
          + 6 + 7 + 8 + 9 + 10

Ausnahmsweise kann bei Klammern ein Zeilenumbruch bis zur schließenden Klammer eingefügt werden:

summation = (1 + 2 + 3 + 4 + 5
             + 6 + 7 + 8 + 9 + 10)
array = [
    1, 2,
    3, 4,
    5
]

Obwohl dies keine gute Schreibweise ist, werden Zeilenumbrüche und Einzüge zwischen ( und ) ignoriert, so dass Sie auch wie folgt schreiben können:

# ! schlechte Schreibweise !
summation = (1 + 2 + 3 + 4 + 5


    + 6 + 7
+ 8 + 9 + 10)

Kodierungsstil

Der Kodierungsstil bezieht sich auf die detaillierten Regeln für das Schreiben eines Programms. Zum Beispiel, ob vier Leerzeichen oder zwei Leerzeichen für die Einzüge verwendet werden sollen. Dies hat keinen Einfluss auf das Ausführungsergebnis, beeinträchtigt aber die Lesbarkeit des Programms.

Wichtig ist, dass in einem einzigen Programm einheitliche Regeln eingehalten werden. Zum Beispiel ist

# ! schlechte Schreibweise !

if x < 0:
      print("negative")
else:
  print("zero or positive")

for i in range(10):
    print(i)

grammatikalisch korrekt, aber sehr schwer zu lesen.

Anfänger neigen dazu zu denken, dass es ausreicht, wenn er/sie weiß, was er/sie geschrieben hat. Aber ein paar Tage später sind Sie sich selbst ein Fremder. Wenn Sie Ihr eigenes Programm später lesen, kommt es oft vor, dass Sie es nicht richtig verstehen, obwohl Sie es selbst geschrieben haben. Deshalb ist es wichtig, bewusst so zu schreiben, dass es für andere (und auch für Sie selbst) leicht zu verstehen ist.

Schreiben Sie Programme, die auch für andere leicht zu verstehen sind, auch wenn Sie nicht vorhaben, sie anderen zu zeigen.

In Python sind diese Regeln in PEP 8 (PEP steht für Python Enhancement Proposals) zusammengefasst. Obwohl sie nicht absolut sind, schreiben viele Python-Programmierer ihre Programme nach diesen Regeln. Lesen Sie sie, wenn Sie Lust dazu haben.

Wie man Fehlermeldungen liest

Angenommen, Sie schreiben das folgende Programm und führen es aus.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def sum3(n):
    summation = 0
    for i in range(3):
        summatio += n + i    # ! Fehler (falscher Variablenname)
    return summation

def print_sum(n):
    s = sum3(n)
    print(s)

print_sum(10)

Sie erhalten dann die folgende Fehlermeldung (die Details können abweichen).

Traceback (most recent call last):
  File "<exec>", line 11, in <module>
  File "<exec>", line 8, in print_sum
  File "<exec>", line 4, in sum3
UnboundLocalError: local variable 'summatio' referenced before assignment

Die unterste Zeile (hier UnboundLocalError: local variable 'summatio' referenced before assignment) ist der konkrete Fehler. Hier heißt es, dass die Variable summatio verwendet wurde, bevor der Wert eingefügt wird (≈ es gibt keine solche Variable).

Was davor steht, ist die Reihenfolge der Ausführung bis zu diesem Punkt. Hier deutet dies darauf hin, dass

  1. Zeile 11 (print_sum(10)) ausgeführt wurde, und

  2. Zeile 8 in print_sum() (s = sum3(n)) ausgeführt wurde, und

  3. beim Ausführen der Zeile 4 in sum3() ein Fehler aufgetreten ist.

Das bedeutet, dass der Fehler in Zeile 4 von sum3() liegt.

Daher sollten Fehlermeldungen in der Regel von unten nach oben gelesen werden.

Frühere Teile können wichtige Hinweise für die Fehlersuche in komplexen Programmen liefern, aber machen Sie sich vorerst nicht zu viele Gedanken darüber.