Den Code aufräumen
#
from random import randint
def erzeuge_zufallsnummer(listenlänge):
zufalls_listennummer = randint(1, listenlänge)
return zufalls_listennummer
def ganzzahl_einlesen(prompt=''):
eingabe = input(prompt)
while not eingabe.isdigit():
print('Die Eingabe konnte nicht in eine Zahl umgewandelt werden.')
eingabe = input(prompt)
return int(eingabe)
listenlänge = ganzzahl_einlesen('Wie viele Schüler_innen sind in der Klasse? ')
zufallsnummer = erzeuge_zufallsnummer(listenlänge)
print('Zufällig ausgewählt wurde der Schüler/die Schülerin mit der Nummer', zufallsnummer)
- Weil die Variable
eingabe
eine Zeichenkette (und in Python daher ein so genanntes Objekt) ist, lassen sich an ihr mit der Punktschreibweise so genannte Methoden aufrufen, die – genau so wie Funktionen – etwas zurückgeben können.
- Rückgabewert der Stringmethode
isdigit
ist ein Wahrheitswert (bool
). Wahrheitswerte gibt es nur zwei: True
(wahr) und False
(falsch)
not
dreht das Ergebnis des nachfolgenden Ausdrucks um: not True
wird zu False
ausgewertet, not False
zu True
while
wiederholt den nachfolgenden Codeblock solange die Bedingung, die direkt nach dem while
aufgeschrieben wird, True
(also wahr) ist. Wie bei den Funktionen wird der Block nach dem Doppelpunkt eingerückt. (Vorsicht! Wenn die Bedingung, die zu Anfang angegeben wird, niemals False
ergeben kann, gerät das Programm in eine Endlosschleife und muss von außen abgebrochen werden.)
from random import randint
def erzeuge_zufallsnummer(listenlänge):
zufalls_listennummer = randint(1, listenlänge)
return zufalls_listennummer
def ganzzahl_einlesen(prompt=''):
eingabe = input(prompt)
while not eingabe.isdigit():
print('Die Eingabe konnte nicht in eine Zahl umgewandelt werden.')
eingabe = input(prompt)
return int(eingabe)
if __name__ == '__main__':
listenlänge = ganzzahl_einlesen('Wie viele Schüler_innen sind in der Klasse? ')
zufallsnummer = erzeuge_zufallsnummer(listenlänge)
print('Zufällig ausgewählt wurde der Schüler/die Schülerin mit der Nummer', zufallsnummer)
if
überprüft eine Bedingung (wieder wird ein Wahrheitswert überprüft), der CodeBlock wird nur ausgeführt, wenn die Bedingung zutrifft.
==
vergleicht die linke und die rechte Seite und gibt True
zurück, wenn beide Seiten gleich sind, und False
, falls nicht.
__name__
ist eine modulinterne Referenz auf eine Zeichenkette, die den Namen des Moduls enthält. (Module können mit import
in eigene Programme eingebunden werden.) Wird eine Datei nicht eingebunden, sondern direkt ausgeführt, enthält __name__
den Wert '__main__'
from random import randint
def erzeuge_zufallsnummer(listenlänge):
zufalls_listennummer = randint(1, listenlänge)
return zufalls_listennummer
def ganzzahl_einlesen(prompt=''):
eingabe = input(prompt)
while not eingabe.isdigit():
print('Die Eingabe konnte nicht in eine Zahl umgewandelt werden.')
eingabe = input(prompt)
return int(eingabe)
def main():
listenlänge = ganzzahl_einlesen('Wie viele Schüler_innen sind in der Klasse? ')
zufallsnummer = erzeuge_zufallsnummer(listenlänge)
print('Zufällig ausgewählt wurde der Schüler/die Schülerin mit der Nummer', zufallsnummer)
if __name__ == '__main__':
main()
- Noch aufgeräumter sieht das Programm aus, wenn wir eine
main
benannte Funktion definieren, deren Ausführung mit dem bekannten Konstrukt gestartet wird. Die Aufteilung ist übersichtlicher. Jede Funktion hat außerdem einen eigenen Scope, d.h. die in der Funktion erzeugten Variablen sind nur dort bekannt. (Im Gegensatz dazu außerhalb von Funktionen erzeugte Variablen werden global genannt. Viele globale Variablen zu verwenden gilt als schlechter Programmierstil.