pue04 November 11, 2016 0.1 Aufgabe 1 Betrachen Sie die nachfolgende Funktion. • Beschreiben Sie was in der Funktion passiert. • Verändern sie f(), sodass der Wert von c innerhalb der Funktion ausgegeben wird. • Verändern sie f() erneut, sodass die Funktion Werte a und b übergeben bekommt (die Zuweisung an c bleibt unverändert). Beachten Sie den Funktionsaufruf anzupassen. In [13]: def f(): a = 4 b = 2 c = a**b f() 0.2 Aufgabe 2 • Beschreiben Sie worin sich die beiden Funktionen (f1 und f2) unterscheiden und verkürzen Sie beide Programme - durch zusammenfassen von Befehlen - so weit es geht. • Welche der beiden Funktionen ist vielseitiger einsetzbar? In [ ]: def f1(): a = 42 b = 21 print(a,b) f1() In [ ]: def f2(): a = 42 b = 21 return a,b c,d = f2() print(c,d) 1 0.3 Aufgabe 3 • Schreiben Sie eine Funktion calc(a,b) die zwei Parameter addiert, subtrahiert, multipliziert und dividiert, wie Sie mehrere Werte auf einmal zurückgeben sehen Sie in Aufgabe 2 f2(). • Schreiben Sie einen Funktionsaufruf und übergeben Sie die Ergebnisse an 4 Variablen. Was passiert, wenn Sie nur eine Variable aufführen und ausgeben? In [ ]: def calc(a,b): 0.4 Aufgabe 4 Die gegebene Funktion smaller2(a,b) gibt die kleinere zweier Zahlen zurück, verändern Sie diese Funktion nicht. * Schreiben sie eine Funktion smaller3(a,b,c) welche die kleinste der drei Zahlen zurück gibt. Verwenden Sie hierzu ausschließlich die Funktion smaller2(a,b). * Schreiben sie eine Funktion smaller6(a,b,c,d,e,f) welche die kleinste der sechs Zahlen zurück gibt. Verwenden Sie hierzu wiederum die Funktionen smaller2(a,b) und smaller3(a,b,c). Testen Sie beide ihre Funktionen auf Korrektheit. In [ ]: def smaller2(a,b): if a < b: return a else: return b print(smaller2(7,-46)) 0.5 Aufgabe 5 In dieser Aufgabe geht es darum, Namensräume in Python zu verstehen, also in welchem Bereich welche Variable gilt. * Versuchen Sie zunächst eigenständig die Namensräume zu erfassen (falls Sie nicht weiter kommen kann es helfen sich die Zuweisungen zu skizzieren, print-Befehle im Code einzufügen oder die Visualisierung auf http://pythontutor.com zu nutzen). * Auf welchen Wegen wurde hier der Wert der Variable d (im Hauptprogramm), also d = 3 in der Funktion func2(a,b,d) nutzbar gemacht, obwohl der Name vom Parameter d überdeckt wird? In [ ]: def func(c,d): a = 4 e = 5 a,c,d = func2(a,c,e) return c*b,a*d,e,func3() def func2(a,b,d): a = b c = func3() return a,d,c def func3(): 2 return d a = 1 b = 2 d = 3 a,b,c,d = func(d,a) print(a,b,c,d) 0.6 Aufgabe 6 • Führen Sie den nachfolgenden Code-Block aus. Was bedeutet die Fehlermeldung und wie lässt sich das Programm korrigieren? • Warum entsteht dieser Fehler nicht in Aufgabe 5? • Informieren Sie sich zu globalen Variablen und erarbeiten Sie eine Lösung des Problems mittels dieser Methode. In [ ]: def switch(): temp = a a = b b = temp a = 42 b = 21 print(a,b) switch() print(a,b) 0.7 (Aufgabe 7) Informieren Sie sich über “optionale Parameter” in Python und schreiben Sie anschließend eine Funktion power die folgende Eigenschaften hat: • Falls der Funktionsaufruf nur einen Parameter a hat soll dieser Parameter als Exponent von 2 dienen, also 2ˆa. • Falls der Funktionsaufruf zwei Parameter a und b hat soll b als Basis und a als Exponent dienen, also bˆa. • Die Funktion soll das jeweilige Ergebnis zurückgeben. • Testen Sie beide Fälle. 0.8 (Aufgabe 8) Sehen Sie sich die nachfolgende Funktion an, was passiert hier? Was müsste man ändern, damit die Zahlen in genau umgekehrter Reihenfolge ausgegeben werden? Können Sie erklären warum? Testen Sie was passiert, wenn es die if-Bedingung nicht gibt. In [ ]: def rec(n): print(n) if n > 0: rec(n-1) 3 rec(10) 4