In jedem der folgenden Codes hat es jeweils einen Fehler bzw. ein Problem.
Finde das Problem und beschreibe es in eigenen Worten.
Behebe das Problem und teste, ob der Code läuft.
Weshalb funktioniert folgender Code nicht?
def say_hello():
print("Hello")
print("Hello")
print("Hello!")
def say_goodbye():
print("Goooood...")
print(" ...bye!")
if input("Yes or no? (y/n)") == 'y':
say_hello
else:
say_goodbye
Lösung
In der If-Verzweigung unten soll entweder die Funktion say_hello oder die Funktion say_goodbye aufgerufen werden. Ein Aufruf einer Funktion muss aber immer Klammern (öffnende und schliessend) beinhalten, auch wenn nichts in den Klammern steht. say_hello wird nicht als Aufruf einer Funktion erkannt, say_hello() schon.
Was ist das Problem mit folgendem Code?
import random
def wuerfel():
return random.randint(1,6)
def drei_wuerfel():
return wuerfel(), wuerfel(), wuerfel()
drei_wuerfel()
Lösung
Wenn du den Code ausführst, siehst du, dass nichts passiert. Die Funktion drei_wuerfel() gibt drei Werte zurück (die durch dreimaligen Aufruf der Funktion wuerfel() zustande kommen). Aber unten wird bloss die Funktion aufgerufen und mit dem Rückgabewert wird nichts gemacht. Sinnvollerweise werden Funktionen, die etwas zurückgeben, nur verwendet, wenn mit dem zurückgegebenen Wert etwas gemacht wird, zum Beispiel so:
print(drei_wuerfel())