Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:funktionen:problems [2023-11-16 14:25] – [Probleme mit Funktionen] hofgf_informatik:funktionen:problems [2025-06-11 08:49] (aktuell) – [Problem 4] gra
Zeile 4: Zeile 4:
 Gehe für jedes Problem nach dem folgenden Muster vor: Gehe für jedes Problem nach dem folgenden Muster vor:
   - *Predict*: Code lesen und voraussagen, was passiert.   - *Predict*: Code lesen und voraussagen, was passiert.
-  - *Run*: Führe den Code in WebtigerJython aus und vergleich das Resultat mit deiner Voraussage.+  - *Run*: Führe den Code in [[https://webtigerpython.ethz.ch/]] aus und vergleiche das Resultat mit deiner Voraussage.
   - *Inspect*: Untersuche, weshalb der Code nicht funktioniert - schreibe einen `# Kommentar` hinter die fehlerhafte Zeile.   - *Inspect*: Untersuche, weshalb der Code nicht funktioniert - schreibe einen `# Kommentar` hinter die fehlerhafte Zeile.
   - *Modify*: Behebe den Fehler im Code.   - *Modify*: Behebe den Fehler im Code.
Zeile 46: Zeile 46:
  
 ++++Lösung| ++++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:+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())'' ''print(drei\_wuerfel())''
 ++++ ++++
Zeile 59: Zeile 59:
     return random.randint(1,6)     return random.randint(1,6)
  
-def drei_wuerfel(zahl):+def drei_wuerfel():
     return wuerfel()     return wuerfel()
     return wuerfel()     return wuerfel()
Zeile 75: Zeile 75:
 Welche beiden Zahlen gibt folgender Code aus? Welche beiden Zahlen gibt folgender Code aus?
 <code python> <code python>
-import math 
 a = 1 a = 1
 b = 2 b = 2
Zeile 90: Zeile 89:
  
 ++++Lösung| ++++Lösung|
-Der Code gibt erst 25, dann 5 aus. Wo liegt nun das Problem? Wenn du nur die letzte Zeile anschaust, würdest du erwarten, dass diese Zeile die Zahl 25 ausgibt (4 hoch 2 plus 3 hoch 2). Aber sie gibt 5 aus. Die Definition der Funktion //summe\_quadrate2// hat die Arguente x und y, rechnet aber mit Variablen namens a und b. Normalerweise würde hier eine Fehlermeldung entstehen – aber das Problem ist dies: Die Variablen a und b sind ganz oben schon definiert. Also verwendet //summe\_quadrate2// einfach diese Variablen, x und y bleiben ungenutzt. Es gilt Folgendes:+Der Code gibt erst 25, dann 5 aus. Wo liegt nun das Problem? Wenn du nur die letzte Zeile anschaust, würdest du erwarten, dass diese Zeile die Zahl 25 ausgibt (4 hoch 2 plus 3 hoch 2). Aber sie gibt 5 aus. Die Definition der Funktion //summe\_quadrate2// hat die Parameter x und y, rechnet aber mit Variablen namens a und b. Normalerweise würde hier eine Fehlermeldung entstehen – aber das Problem ist dies: Die Variablen a und b sind ganz oben schon definiert. Also verwendet //summe\_quadrate2// einfach diese Variablen, x und y bleiben ungenutzt. Es gilt Folgendes:
   * Variablen, die //ausserhalb// der Definition einer Funktion definiert werden, sind //globale Variablen//. Sie sind global, also überall bekannt – auch //in// der Definition der Funktion.    * Variablen, die //ausserhalb// der Definition einer Funktion definiert werden, sind //globale Variablen//. Sie sind global, also überall bekannt – auch //in// der Definition der Funktion. 
   * Falls in der Definition der Funktion eine Variable definiert wird, die gleich heisst wie die globale Variable, handelt es sich dabei um zwei verschiedene Variablen!   * Falls in der Definition der Funktion eine Variable definiert wird, die gleich heisst wie die globale Variable, handelt es sich dabei um zwei verschiedene Variablen!
  
-**Merke:** Definiere Variablen, die du innerhalb einer Funktino verwendest, immmer innerhalb der Funktion, nicht ausserhalb. +**Merke:** Definiere Variablen, die du innerhalb einer Funktion verwendest, immer innerhalb der Funktion, nicht ausserhalb. 
  
 ++++ ++++
Zeile 113: Zeile 112:
  
 ++++Lösung| ++++Lösung|
-Die Funktion zufallszahl() gibt keinen Wert //zurück//. Sie gibt bloss einen Wert //aus//. Damit die Funktion einen Wert zurückgibt, müsste ''print'' durch ''return'' ersetzt werden. +Die Funktion `zufallszahl()gibt keinen Wert //zurück//. Sie gibt bloss einen Wert //aus//. Damit die Funktion einen Wert zurückgibt, müsste ''print'' durch ''return'' ersetzt werden. 
  
 **Merke:** **Merke:**
  • gf_informatik/funktionen/problems.1700144705.txt.gz
  • Zuletzt geändert: 2023-11-16 14:25
  • von hof