==== Aufgaben NB – Funktionen mit Rückgabewerten ==== Die folgenden Aufgaben behandeln Funktionen mit Argumenten **und** Rückgabewerten. Hier gehts zur Übersicht: [[gf_informatik:programmieren_iv_gra|]] === NB1 – Franken in Kronen === Schreibe eine Funktion ''chf\_in\_nok'', die Schweizer Franken (CHF) in Norwegische Kronen (NOK) umrechnet. Der Funktion wird eine Zahl in CHF übergeben und sie gibt die richtige Zahl in NOK zurück. Für den Umrechnungsfaktor googelst du einfach nach "chf in nok". Teste deine Funktion. === NB2 – Maximalwert aus zwei Zahlen === Schreibe eine Funktion ''max\_von\_zwei(a, b)'', die das grössere der beiden Argumente zurückgibt. Teste deine Funktion für beide Fälle (erstes Argument grösser und zweites Argument grösser). === NB3 – Pfannkuchen === Schreibe eine Funktion ''zutaten\_pfannkuchen(personen)'', die ausgehnd von der Anzahl Personen die Mengen für die Zutaten Mehl, Salz, Milch und Eier berechent und zurückgibt. Hier die Mengen für eine Person: * 50 g Mehl * 0.125 Teelöffel Salz * 1 dl Milch * 1 Ei **Hinweis:** Hinter ''return'' kannst du mehrere Rückgabewerte anführen: Trenne sie mit Kommas. Teste deine Funktion mit folgendem Code: {{:gf_informatik:programmieren_iv_gra:pasted:20250507-053931.png?270}} n = input("Wie viele Personen?") mehl, salz, milch, ei = zutaten_pfannkuchen(n) print(f"Du brauchst:\n{mehl} g Mehl\n{salz} TL Salz\n{milch} dl Milch\n{ei} Eier") === NB4 – Minimalwert aus drei Zahlen === Mit den Schlüsselworten ''and'' und ''or''kannst du Bedingungen miteinander **verknüpfen**. Mit dem Schlüsselwort ''not'' kannst du Bedingungen und Ausdrücke **invertieren**. Hier drei Beispiele: a = input("Erste Zahl eingeben:") b = input("Zweite Zahl eingeben:") if a > 0 and b > 0: print("Beide Zahlen sind positiv") if a > 0 or b > 0: print("Mindestens eine der Zahlen ist positiv") if not(a > 0 or b > 0): print("Keine der Zahlen ist positiv") * Erste Verzweigung: Eine Verknüpfung mit ''and'' ist wahr, wenn **sowohl** die erste, **als auch** die zweite Bedingung wahr ist. * Zweite Verzweigung: Eine Verknüpfung mit ''or'' ist wahr, wenn die erste **oder** die zweite Bedingung **oder** beide wahr sind. * Dritte Verzweigung: ''not'' invertiert (negiert) die nachfolgende Bedingung: Wenn das, was nach ''not'' kommt, falsch ist, so ist die gesamte Bedingung wahr – und umgekehrt. [[https://webtigerpython.ethz.ch/?code=NobwRAdghgtgpmAXGGUCWEB0AHAnmAGjABMoAXKJMKAAgF4aNsBXMgCgB0wBRAJwGcycGgC0oACwA2NOBgDmcAEZwIiLgEoOERfUYQW7LiIDusoaInTZEBctUatWtADMatAHw0ADG4jEaOp5eahA0YTTYvBiGYABCssTCYlIqNPwY_tgA9ulkaABuDhBOrh7eNFm8ATRBIeERURAxALIZcIIq_DIYwolVyZKpaIIROWh5hWCaxRAuNBBZ7GU-ldVB6nXhkdGcYADS1r1w_ZZDI9m5BUVgAL4AukA|Probiere es aus – teste den Code für alle drei Möglichkeiten!]] Schreibe eine Funktion ''min\_von\_drei(a, b, c)'', die das kleinste der drei Argumente zurückgibt. Verwende **logische Verknüpfungen** (studiere hierzu die grüne Box oben). Teste deine Funktion mit folgendem Code: print(min_von_drei(1,2,3)) print(min_von_drei(5,6,4)) print(min_von_drei(9,7,8)) === NB5 – Maximalwert aus Liste === Schreibe eine Funktion ''max\_in\_liste(liste)'', die das grösste Element aus einer Liste zurückgibt. Verwende eine Schleife. Verwende keine bestehende Funktion. Teste deine Funktion mit folgenden drei Listen: list1 = [11, 16, 5, 12, 3, 13] list2 = [13, 2, 5, 10, 1, 17, 5, 25] list3 = [-25, -13, -3, -33] === NB6 – Gerade oder ungerade === Schreibe eine Funktion ''ist\_gerade(n)'', die ''True'' zurückgibt, wenn n gerade ist, sonst ''False''. Teste deine Funktion mit folgendem Code: zahl = input("Bitte ganze Zahl eingeben:") if ist_gerade(zahl): print("Die Zahl ist gerade") else: print("Die Zahl ist ungerade") **Frage:** Bisher hatten wir in einer if-Verzeigung immer eine Bedingung mit Vergleichsoperatoren stehen. Zum Beispiel //x > 4// oder //x % 2 == 0// etc. In diesem Code steht bloss die Funktion ist_gerade(). Wie erklärst du, dass hier keine Bedingung nötig ist? Bespreche deine Antwort mit der Lehrperson. === NB7 – Pizzabestellung === Schreibe eine Funktion ''pizza\_lieferung(n)'', die ausgehend von der Anzahl Pizzen den Preis für die Pizzalieferung berechnet und zurückgibt. Das Argument ''n'' gibt die Anzahl Pizzen an. Jede Pizza kostet 12 Franken. Die Liefergebühren betragen 20 Franken. Ab einem Bestellwert von 50 Franken entfallen die Liefergebühren. Teste deine Funktion. {{:gf_informatik:programmieren_iv_gra:pasted:20250507-061750.png?200}} **Frage:** Wenn ihr zu viert seid: Bestellt ihr besser 4 oder 5 Pizzen? === NB8 – Nächte im Hotel === Schreibe eine Funktion ''hotel\_preise(personen, naechte, klasse)'', die den Gesamtpreis für einen Hotelaufenthalt gemäss folgender Tabelle berechnet und zurückgibt: Preise **pro Nacht**: ^ Klasse ^ Einzelzimmer ^ Doppelzimmer ^ | Standard | 120 | 160 | | Ausblick | 140 | 180 | | Balkon | 200 | 260 | **Hinweise:** * Deine Funktion muss zuerst die Anzahl Einzel- und Doppelzimmer berechnen (ausgehend von der Anzahl Personen): Es ist maximal ein Einzelzimmer nötig. * Falls für die Klasse etwas anderes als "Standard", "Ausblick" oder "Balkon" angegeben wird, wird der höchste Preis (Balkon) berechnet. {{:gf_informatik:programmieren_iv_gra:pasted:20250507-120048.png?270}} Teste deine Funktion mit folgendem Code: # Reise 1: 2 Personen, 2 Nächte, Standard: Preis = 320 print(hotel_preise(2, 2, "Standard")) # Reise 2: 5 Personen, 3 Nächte, Ausblick: Preis = 1500 print(hotel_preise(5, 3, "Ausblick")) # Reise 3: 6 Personen, 4 Nächte, Balkon: Preis = 3120 print(hotel_preise(6, 4, "Balkon")) # Reise 4: 1 Person, 1 Nacht, falsche Angabe: Preis = 200 print(hotel_preise(1, 1, "stanDart")) ==== Lösungen ==== ++++Lösungen zu Aufgaben NB:| === NB1 === def chf_in_nok(chf): return chf * 12.57 print(chf_in_nok(3)) === NB2 === def max_von_zwei(a, b): if a > b: return a else: return b print(max_von_zwei(2,3)) print(max_von_zwei(3,4)) === NB3 === def zutaten_pfannkuchen(n): return n * 50, n * 0.125, n, n n = input("Wie viele Personen?") mehl, salz, milch, ei = zutaten_pfannkuchen(n) print(f"Du brauchst:\n{mehl} g Mehl\n{salz} TL Salz\n{milch} dl Milch\n{ei} Eier") === NB4 === def min_von_drei(a, b, c): if a < b and a < c: return a elif b < a and b < c: return b else: return c print(min_von_drei(1,2,3)) print(min_von_drei(5,6,4)) print(min_von_drei(9,7,8)) === NB5 === list1 = [11, 16, 5, 12, 3, 13] list2 = [13, 2, 5, 10, 1, 17, 5, 25] list3 = [-25, -13, -3, -33] def max_in_liste(liste): max_wert = liste[0] i = 1 while i < len(liste): if liste[i] > max_wert: max_wert = liste[i] i = i + 1 return max_wert print(max_in_liste(list1)) print(max_in_liste(list2)) print(max_in_liste(list3)) === NB6 === def ist_gerade(n): if n % 2 == 0: return True return False print(ist_gerade(4)) print(ist_gerade(5)) === NB7 === def pizza_lieferung(personen): if personen * 12 >= 50: return personen * 12 else: return personen * 12 + 20 print(pizza_lieferung(4)) print(pizza_lieferung(5)) === NB8 === ++++