lehrkraefte:snr:informatik:python:funktionen

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:snr:informatik:python:funktionen [2021/11/02 18:31]
Olaf Schnürer [Globale und lokale Variablen]
lehrkraefte:snr:informatik:python:funktionen [2021/11/04 18:09] (current)
Olaf Schnürer [Funktionen]
Line 59: Line 59:
 </WRAP> </WRAP>
  
 +<WRAP round todo>
 +Du kannst einer Funktion auch eine Liste als Parameter übergeben. Schreibe ein Programm, das dies ausnutzt! - Etwa ein Programm, das den Durschnitt einer Liste von Zahlen ausrechnet.
 +</WRAP>
  
 <WRAP round todo> <WRAP round todo>
Line 64: Line 67:
 Verbessere das Programm (es genügt, vier Zeichen (und eventuell Leerzeichen) zu ergänzen)! Verbessere das Programm (es genügt, vier Zeichen (und eventuell Leerzeichen) zu ergänzen)!
  
-Bemerkung: Sobald die ''return''-Anweisung in einer Funktion aufgerufen wird, wird die weitere Ausführung der Funktion unterbrochen.+Bemerkung: Sobald die ''return''-Anweisung in einer Funktion aufgerufen wird, wird die weitere Ausführung der Funktion abgebrochen.
  
 (Hierbei steht ''sqrt(...)'' für "square root", Quadratwurzel und ''int(...)'' macht aus einer Kommazahl eine ganze Zahl.) (Hierbei steht ''sqrt(...)'' für "square root", Quadratwurzel und ''int(...)'' macht aus einer Kommazahl eine ganze Zahl.)
Line 113: Line 116:
 </hidden> </hidden>
 </WRAP> </WRAP>
 +
 +<WRAP round todo>
 +ACHTUNG, ICH HATTE LEIDER ZUNÄCHST DAS AUSRUFEZEICHEN IN DER ZWEITEN ZEILE VERGESSEN!
 +
 +Versuche die folgende Definition der Fakultätsfunktion
 +
 +{{:lehrkraefte:snr:informatik:python:fakultaet-definition.png?300|}}
 +
 +in ein Programm zu übersetzen.
 +
 +Wenn dir das gelingt, hast du "selbst" entdeckt, was //Rekursion// ist: Eine Funktion, die sich selbst (oft auch mehrfach) aufruft - aber so, dass das Programm nicht unendlich lange läuft.
 +
 +Die obige Definition ist übrigens die sogenannte //induktive// oder //rekursive// Definition der Fakultätsfunktion.
 +</WRAP>
 +
  
  
Line 149: Line 167:
 <code python> <code python>
 def test(): def test():
 +    print(s)
     global s     global s
     s = "Welt"     s = "Welt"
Line 157: Line 176:
 print(s) print(s)
 </code> </code>
 +In diesem Beispiel bedeutet der Befehl ''s = "Welt"'' also nicht wie zuvor "lege eine neue lokale Variable ''ss'' mit dem Wert "Welt" an. Stattdessen wird der globalen (mit ''global'' lokal veränderlich gemachten) Variablen ''ss'' der Wert "Welt" zugewiesen.
 </WRAP> </WRAP>
  
 +<WRAP round info>
 +Vermutlich ist es intuitiv klar, 
 +der Vollständigkeit halber sei aber erwähnt, dass lokale Variablen ausserhalb ihres Sichtbarkeitsbereichst nicht zugänglich sind in dem Sinne, dass ihr Wert nicht abrufbar ist:
 +<code python>
 +def test():
 +    s = "Welt"
 +    print(s)
 +    
 +test()
 +if s == "Welt":
 +    print("Weltschmerz")
 +# s = "Hallo"
 +# print(s)
 +</code>
 +Wenn man hier aber die ''if''-Kontrollstruktur durch die beiden auskommentierten Zeilen ersetzt, so funktioniert das Programm wieder: Nun gibt es aber wie oben zwei voneinander unabhängige Variablen mit dem Namen ''s''.
 +</WRAP>
  
  
  
  
 +
 +
 +
 +
 +===== Einige Lösungsvorschläge =====
 +<hidden Fakultät>
 +<code python>
 +def fakultaet(x):
 +    wert = 1
 +    for i in range(1, x + 1):
 +        wert = wert * i
 +    return(wert)
 +
 +print(fakultaet(5))
 +
 +for k in range(10):
 +    print("%d! = %d" % (k, fakultaet(k)))
 +</code>
 +</hidden>
  
  
  • lehrkraefte/snr/informatik/python/funktionen.1635874300.txt.gz
  • Last modified: 2021/11/02 18:31
  • by Olaf Schnürer