Umsetzung: Partyplaner

Die Situation

Ihre Eltern haben Ihnen erlaubt, eine kleine Party zuhause zu organisieren. Allerdings haben sie klare Regeln aufgestellt:

«Ach ja: Du sollst für jede eingeladene Person deren Namen aufschreiben und ob sie vegetarisches Essen braucht – wir wollen ja richtig einkaufen können!.

Du darfst maximal 12 Leute einladen. Pro Person rechnest du mit 5 Franken für Snacks und Getränke. Wenn du mehr als 8 Leute einlädst, musst du zusätzlich noch 20 Franken für extra Aufräumhilfe einplanen. Ausserdem wollen wir vorher wissen, wie viel das Ganze kostet.

Falls das Budget über 70 Franken liegt, müssen wir nochmal darüber reden. Falls es unter 30 Franken liegt, fragst du dich vielleicht, ob sich der Aufwand überhaupt lohnt.«

Dein Auftrag

Entwicklen Sie ein Programm, das bei der Planung dieser Party hilft.

Das Programm soll:

  1. Fragen, wie viele Personen du einladen möchtest
  2. Prüfen, ob die Anzahl erlaubt ist (zwischen 1 und 12 Personen)
  3. Falls erlaubt: Für jede Person den Namen erfragen und ob sie Vegetarier:in ist
  4. Die Gesamtkosten berechnen (inkl. Aufräum-Zuschlag falls nötig)
  5. Die Anzahl Vegetarier:innen ausgeben
  6. Eine passende Rückmeldung zum Budget geben:
    • Unter 30 Fr.: «Lohnt sich das überhaupt?»
    • 30-70 Fr.: «Alles klar, viel Spass!»
    • Über 70 Fr.: «Das müssen wir nochmal besprechen…»
  7. Falls die Anzahl nicht erlaubt ist: Eine Fehlermeldung ausgeben

Problemanalyse

Zuerst analysieren wir die Aufgabenstellung:

Durchführung

Lesen Sie die Situation nochmals durch und markieren Sie – in Anlehnung an das EVA Prinzip:

  • Alle Eingaben (was muss die Benutzerin oder der Benutzer eingeben?) (z.B. mit 🟢)
  • Die Verarbeitung:
    • Alle Berechnungen (was muss berechnet werden?) (z.B. mit 🔵)
    • Alle Entscheidungen (wo gibt es ein «falls/wenn»?) (z.B. mit 🟡)
  • Alle Ausgaben (was soll am Ende angezeigt werden?) (z.B. mit 🔴)

Überprüfung

  1. Anwendung des EVA Prinzips auf eine konkrete Aufgabenstellung
  2. Was wäre ein möglicher Durchlauf des Programms?

Beispiel-Durchlauf:

Wie viele Personen möchtest du einladen? 3

Person 1 - Name: Lena
Ist Lena Vegetarier:in? (ja/nein): nein

Person 2 - Name: Tim
Ist Tim Vegetarier:in? (ja/nein): ja

Person 3 - Name: Sara
Ist Sara Vegetarier:in? (ja/nein): ja

--- Zusammenfassung ---
Anzahl Gäste: 3
Davon Vegetarier:innen: 2
Gesamtkosten: 15.0 Franken

Lohnt sich das überhaupt?

Struktogramm

Erstellen Sie ein Struktogramm von Hand oder mit unserem Tool:

Durchführung

Erstellen Sie ein Struktogramm für einen effizienten Algorithmus, der den Auftrag erfüllt.

Überprüfung

  1. Erstellung eines Struktogramms für eine konkrete Aufgabenstellung

Musterlösung (eine von vielen!):

Implementierung

Schreiben Sie ein Python Programm auf Papier oder besser in Thonny.

Durchführung

Erstellen Sie ein Python Programm, das den obigen effizienten Algorithmus umsetzt.

Überprüfung

  1. Python Programmierung mit input, print, for, if und der Umwandlung von Variablentypen

Eine mögliche Musterlösung:

# Eingabe der Anzahl Gäste
anzahl = int(input("Wie viele Personen möchtest du einladen? "))

# Prüfung ob Anzahl gültig
if anzahl >= 1 and anzahl <= 12:
    
    # Zähler für Vegetarier:innen
    vegetarier_count = 0
    
    # Schleife für jede Person
    for i in range(anzahl):
        print()
        name = input("Person " + str(i + 1) + " - Name: ")
        ist_vegi = input("Ist " + name + " Vegetarier:in? (ja/nein): ")
        
        # Vegetarier:innen zählen
        if ist_vegi == "ja":
            vegetarier_count = vegetarier_count + 1
    
    # Kosten berechnen
    kosten = anzahl * 5.0
    
    # Aufräum-Zuschlag prüfen
    if anzahl > 8:
        kosten = kosten + 20.0
    
    # Zusammenfassung ausgeben
    print()
    print("--- Zusammenfassung ---")
    print("Anzahl Gäste: " + str(anzahl))
    print("Davon Vegetarier:innen: " + str(vegetarier_count))
    print("Gesamtkosten: " + str(kosten) + " Franken")
    print()
    
    # Budget-Rückmeldung
    if kosten < 30:
        print("Lohnt sich das überhaupt?")
    elif kosten > 70:
        print("Das müssen wir nochmal besprechen...")
    else:
        print("Alles klar, viel Spass!")

else:
    print("Ungültige Anzahl! Du darfst zwischen 1 und 12 Personen einladen.")

Abgedeckte Konzepte

KonzeptWo in der Aufgabe
SequenzGrundstruktur des Programms
Wiederholung (for)Eingabe der Gästedaten
Bedingung (if/elif/else)Gültigkeitsprüfung, Zuschlag, Budget-Feedback
Verschachtelungif innerhalb von for (Vegetarier-Check)
input()Anzahl, Name, Vegetarier-Status
print()Alle Ausgaben
int()Umwandlung der Anzahl
floatKosten (implizit durch 5.0)
str()Ausgabe von Zahlen in Strings
Variablentypenint (anzahl, count), float (kosten), str (name, ist_vegi)

Typische Stolpersteine

  1. Vergessen von int() bei der Anzahl-Eingabe
  2. Falsche Schleifenvariable: range(anzahl) vs. range(1, anzahl+1)
  3. String-Vergleich: ist_vegi == "ja" (exakte Schreibweise!)
  4. Initialisierung vergessen: vegetarier_count = 0 vor der Schleife