5  Verzweigungen

Inhalte stammen von (Foundation), lizensiert unter

5.1 Arithmetische Operationen

Slides

5.2 Aufgaben - Arithmetische Operationen

Bearbeite die 3 Aufgaben.

5.2.1 Aufgabe 01

Erstelle in unserem Programmierordner einen neue Datei 02_Verzweigungen_Arithmetik_[DeinNachname].py. Kopiere den untenstehenden Code in diese Datei. Beantworte die Fragen (im Code als Kommentar integriert).

print("---Willkommen bei Split My Bill---")
print("Wie hoch ist die Gesamtrechnung?")
bill_total = float(input())
print("Wie viele Personen teilen sich die Rechnung?")
people = int(input())
print("Welchen Prozentsatz Trinkgeld möchtest du geben?")
tip_percentage = int(input())

percentage_decimal = tip_percentage / 100
tip_total = bill_total * percentage_decimal
bill_total = bill_total + tip_total

cost_per_person = bill_total / people

print(f"Die Gesamtrechnung inklusive Trinkgeld beträgt €{bill_total}")
print(f"Die Gesamtkosten pro Person betragen €{cost_per_person}")


''' FRAGEN:
----------------------------------------

Hier ist die nummerierte Übersetzung:

1. Was ist die erste Frage, die vom Programm gestellt wird?
2. Welcher Datentyp wird für bill_total verwendet?
3. Warum wird dieser Datentyp für bill_total benötigt?
4. Welcher Datentyp wird in Zeile 5 für die Anzahl der Personen verwendet?
5. Warum wird dieser Datentyp verwendet?
6. In Zeile 7 wird der Prozentsatz des Trinkgelds eingegeben, den die Gruppe hinterlassen möchte. Was passiert in Zeile 9?
7. Was wird in Zeile 10 berechnet?
8. In Zeile 11 wird die Variable bill_total mit dem Ausdruck bill_total + tip_total neu zugewiesen. Beschreibe, was hier passiert.
9. Welche Art von Fehler tritt auf (Laufzeit/Syntax/Logik), wenn du "Hallo" für die erste Frage eingibst?
10. Was könntest du tun, um diesen Fehler zu vermeiden?
'''

5.2.2 Aufgabe 02

Befolge die Hinweise und verändere das Programm aus der ersten Aufgabe.

Änderung Hinweis
Die Zeilen 9 bis 11 enthalten drei separate arithmetische Ausdrücke, die die endgültige Gesamtrechnung berechnen. Verwende dein Wissen über BIDMAS, um einen einzigen Ausdruck zu schreiben, der die gleiche Berechnung durchführt. Versuche, den Ausdruck zuerst auf ein Blatt Papier zu schreiben und ihn mit einem Taschenrechner zu testen. Denke darüber nach, was zuerst berechnet werden muss und wie du BIDMAS verwenden kannst, um dies zu erreichen. Verwende # Hashtags vor den ursprünglichen drei Codezeilen, damit du sie als Referenz lesen kannst, während du deine neue Codezeile testest.
#percentage_decimal = tip_percentage / 100 #tip_total = bill_total * percentage_decimal #bill_total = bill_total + tip_total 

5.2.3 Aufgabe 03

Aufgrund des Erfolgs der „Split my bill“-App wurdest du gebeten, eine neue App namens „Split my pizza“ zu erstellen. Diese App soll dem Benutzer zeigen, wie er eine Pizza gleichmäßig unter seinen Freunden aufteilen kann. Erstelle dazu eine neue Datei mit dem Namen 02_Verzweigungen_Pizzasplitter_[DeinNachname].py

Die App sollte:

  • Nach der Anzahl der Stücke auf der Pizza fragen
  • Fragen, wie viele Personen die Pizza teilen
  • Zeigen, wie viele Stücke jeder bekommt
  • Zeigen, ob Stücke übrig bleiben

Hinweis: Du musst für dieses Programm Mod % und Ganzzahldivision // verwenden. Hier ist ein Beispiel für die Verwendung von Ganzzahldivision und Mod für Zähler. Du könntest dies auf deine eigene Lösung anwenden:

counters_each = 10 // 3
counters_remaining = 10 % 3

🔥 Erweiterung für sehr Gute SchülerInnen

Die App könnte auch:

  • Den Code von „Split my bill“ integrieren, indem sie berechnet, wie viel jeder für seinen Anteil an der Pizza bezahlen muss.

5.3 Was sind Verzweigungen?

Slides

5.3.1 A01 - Output

Lade die Datei Output.docx herunter und speichere diese in deinem Programmierordner. Öffne diese und bearbeite die Fragen. Zeige mir deine Antworten wenn du fertig bist.

5.3.2 A02 - Code analysieren

Erstelle in unserem Programmierordner eine neue Datei 03_Verzweigungen_Intro_[DeinNachname].py. Kopiere den untenstehenden Code in diese Datei. Beantworte die Fragen (im Code als Kommentar integriert) direkt im Programmcode!

print("Wie heißt du?")
name = input().lower() 
if name == "Tobias":
  print("Wie geht es dir, Tobias!")
else:
  print(f"Schöner Name, {name}")
print(f"Also {name}, ist es heiß oder kalt bei dir heute?")
weather = input().upper()
if weather == "kalt":
  print("Du musst frieren!")
elif weather == "heiß":
  print("Trinke viel Wasser")
else:
  print("Ich kann dir bei dieser Wetterlage keinen Rat geben.")
print("Magst du die Farbe Blau?")
likes_blue = input()
if likes_blue == "Ja":
  print("Ich mag Blau auch")
print("Hab einen schönen Tag! Tschüss!")

''' FRAGEN & ANWEISUNGEN
----------------------------------------
1. Führe den Code aus und gib Tobias in Großbuchstaben ein, wenn nach deinem Namen gefragt wird.
   - Welcher Text wird sofort auf dem Bildschirm ausgegeben?

2. Führe den Code erneut aus und gib tobias in Kleinbuchstaben ein, wenn nach deinem Namen gefragt wird.
   - Welcher Text wird sofort auf dem Bildschirm ausgegeben?

3. Gehe zu Zeile 2 und lösche .lower() am Ende der Codezeile. Führe den Code erneut aus und gib TOBIAS in Großbuchstaben ein.
   - Welcher Text wird sofort auf dem Bildschirm ausgegeben?

4. Führe den Code erneut aus und gib tobias in Kleinbuchstaben ein, wenn nach deinem Namen gefragt wird.
   - Welcher Text wird sofort auf dem Bildschirm ausgegeben?

5. Füge den .lower() Code wieder am Ende von Zeile 2 hinzu.
   - Welche Funktion denkst du, erfüllt .lower()?
   - Hinweis: Wenn du dir unsicher bist, gib diesen Code print(name) in Zeile 3 ein, um zu drucken, was in der Variablen name gespeichert ist. Denke daran, ihn nach dem Testen zu löschen.

6. Zeile 8 hat .upper() am Ende der Eingabe.
   - Welche Funktion denkst du, erfüllt .upper()?
   - Hinweis: Verwende die gleichen Untersuchungstechniken wie oben, wenn du dir unsicher bist.

7. Warum denkst du, dass .lower() und .upper() wichtig sein könnten, wenn du überprüfst, ob Bedingungen wahr oder falsch sind?

8. Zeile 5 und 6 enthalten ein else: und eine print-Anweisung.
   - Muss die Bedingung name == "Tobias": wahr oder falsch sein, damit diese Codezeilen ausgeführt werden?

9. Zeilen 9 bis 12 enthalten diesen Code:
   
   if weather == "kalt":
     print("Du musst frieren!")
   elif weather == "heiß":
     print("Trinke viel Wasser")
   
   - Wenn der Benutzer kalt auf die Wetterfrage eingibt, was wird direkt danach auf dem Bildschirm ausgegeben?

   - Wenn der Benutzer heiß auf die Wetterfrage eingibt, was wird direkt danach auf dem Bildschirm ausgegeben?
   
10. Zeilen 13 bis 14 enthalten diesen Code:

    else:
      print("Ich kann dir bei dieser Wetterlage keinen Rat geben.")

    - Was muss der Benutzer eingeben, damit „Ich kann dir bei dieser Wetterlage keinen Rat geben.“ ausgegeben wird?

11. Zeilen 17 und 18 enthalten diesen Code:

    if likes_blue == "Ja":
      print("Ich mag Blau auch")

    - Was muss der Benutzer eingeben, damit „Ich mag Blau auch“ ausgegeben wird?

    - Was wird auf dem Bildschirm angezeigt, wenn der Benutzer ja, JA oder etwas anderes eingibt?

'''

5.3.3 A03 - Code verändern

Verändere das Programm wie folgt:

Änderung Hinweis
Passe den Code in den Zeilen 16 und 17 so an, dass die Eingabe in Großbuchstaben umgewandelt wird und dies in der Bedingung überprüft wird. Sieh dir die Zeilen 8 und 9 an, um zu sehen, wie es dort gemacht wurde. Denke daran, deinen Code zu testen.
Füge in Zeile 7 einen elif-Zweig ein, der überprüft, ob der Name Leia ist. Wenn der Name Leia ist, sollte die Nachricht „Die Macht ist mit dir“ anzeigen. Sieh dir das elif an, das verwendet wird, wenn das Wetter heiß ist, um zu sehen, wie der Code strukturiert ist. Denke daran, deinen Code zu testen.
Häufige Fehler
  • Das elif wurde eingerückt (stelle sicher, dass es auf einer Linie mit dem if darüber ist)
  • leia wurde nicht in Kleinbuchstaben innerhalb der Bedingung geschrieben
  • Ein Doppelpunkt : fehlt am Ende der Bedingung.
  • Die print-Anweisung ist nicht unter dem elif eingerückt
  • Verwende ein else mit der letzten if-Anweisung.
Änderung Hinweis
Bei if likes_blue == "Ja": –> wenn der Benutzer nicht Ja eingibt, wenn er gefragt wird, ob er Blau mag, sollte das Programm „Das ist schade, denn ich mag Blau wirklich“ ausgeben. Denke daran, dass else: keine Bedingung benötigt. Denke daran, deinen Code zu testen.
Häufige Fehler
  • else wurde mit einem großen E geschrieben
  • Der Doppelpunkt : fehlt nach dem else
  • Die print-Anweisung darunter ist nicht eingerückt

5.3.4 A04 - Bonus

🔥 Für die sehr guten ProgrammiererInnen unter euch:

  • Modifiziere das Programm weiter, indem du am Ende eine weitere Frage hinzufügst. Verwende if, elif, else um maßgeschneiderte Antworten zu geben.
  • Formuliere die Fragen und Antworten zu den Fragen um, zum Beispiel: Was ist deine Lieblingshunderasse?

5.4 Aufgabe 02: Die Witzmaschine

Suche dir einen Partner. Einer von euch erstellt in Visual Studio Code eine neue Datei 03_Verzweigungen_JokeMachine_Nachname1Nachname2.py.

5.4.1 Einführung

Dies ist eine Paarprogrammierungsaktivität:

Wikipedia

Pair Programming ist eine Softwareentwicklungstechnik, bei der zwei Programmierer gemeinsam an einem Arbeitsplatz arbeiten. Einer, der Fahrer, schreibt den Code, während der andere, der Beobachter oder Navigator, jede Zeile des Codes überprüft, während sie eingegeben wird. Die beiden Programmierer wechseln häufig die Rollen.

Ihr werdet in Paaren arbeiten, um ein Witzmaschinenprogramm zu erstellen. Denkt daran, alle fünf Minuten die Rollen von Fahrer und Navigator zu wechseln. Der Fahrer programmiert und der Navigator versucht den Fahrer zu unterstützen..

5.4.2 Szenario

Die Witzmaschine ist ein Programm, das eure Fähigkeiten in Witz-Pointe erraten testet. Es gibt euch die Eröffnungszeile eines Witzes und ihr müsst die Pointe erraten. Wenn ihr richtig liegt, gewinnt ihr einen Punkt!

Verwendet die bereitgestellten Witze, um ein Programm zu erstellen, das:

  • Eine Einführung in das Spiel enthält
  • Den Anfang eines Witzes erzählt
  • Dem Benutzer erlaubt, die Pointe zu erraten
  • Überprüft, ob der Benutzer richtig liegt
    • Dem Benutzer einen Punkt gibt, wenn er richtig rät
    • Feedback gibt, wenn er richtig rät
    • Feedback gibt, wenn er falsch liegt
  • Am Ende die endgültige Punktzahl enthüllt

5.4.3 Witze

Was ist orange und läuft durch den Wald? Eine Wanderine

Was macht ein Pirat am Computer? Er drückt Enter

Was ist ein Baum ohne Blätter? Holz

5.4.4 A01

  • Schreibt einen Text, der den Benutzer in das Spiel einführt. Er könnte einen Titel und einfache Anweisungen enthalten.
  • Verwendet die print-Anweisung, um diesen Text dem Benutzer anzuzeigen.
  • Testet euren Code.

Beispielcode:

print("Errate die Pointe...")
Häufige Fehler
  • Großes P für print verwendet
  • Klammern am Anfang oder Ende des Textes fehlen
  • Anführungszeichen am Anfang oder Ende des Textes fehlen

5.4.5 A02: Frage nach der Pointe

  • Schreibt die Eröffnungszeile des ersten Witzes
  • Erstellt eine Variable, um die Eingabe des Benutzers zu speichern
  • Entscheidet, ob ihr die Daten in Groß- oder Kleinbuchstaben umwandeln möchtet, und verwendet die entsprechende Funktion dafür
  • Schreibt eine if-Anweisung, die eine Bedingung enthält, um zu überprüfen, ob die Punchline des Benutzers korrekt ist
  • Gebt einen Text aus, der angezeigt wird, wenn der Benutzer richtig liegt
  • Testet euren Code

Beispielcode:

print("Hier ist der Anfang meines Witzes")
punchline = input().upper()
if punchline == "DIE POINTE":
    print("Gut gemacht, du lagst richtig!")
Häufige Fehler
  • Großes I für If verwendet
  • Ein =-Zeichen anstelle von == verwendet
  • Doppelpunkt : am Ende der if-Anweisung fehlt
  • Einrückungen/Leerzeichen fehlen
  • Anführungszeichen um die Punchline in der Bedingung fehlen
  • Punchline in der Bedingung ist in Großbuchstaben geschrieben, aber .lower() wurde verwendet

5.4.6 A03: Punktestand halten

  • Erstellt eine Variable, um den Punktestand zu verfolgen

  • Initialisiert die Variable am Anfang des Codes score = 0

  • Erhöht den Punktestand innerhalb der if-Anweisung score = score + 1

  • Testet euren Code, indem ihr print(score) in eine neue Zeile einfügt

  • Löscht die Zeile print(score), sobald das Testen abgeschlossen ist. :::{.callout-note} ## Häufige Fehler

  • Punktestand wurde nicht am Anfang des Codes initialisiert

  • Falsche Schreibweise der Punktestand-Variable

  • Punktestand wurde nicht an der richtigen Stelle erhöht (er sollte direkt unter der Gut gemacht-Anweisung, innerhalb der if-Anweisung, stehen) :::

5.4.7 A4: Feedback, wenn der Benutzer falsch liegt

  • Fügt ein else: unterhalb der if-Anweisung hinzu
  • Fügt eine print-Anweisung hinzu, die Feedback zum Witz gibt
  • Testet euren Code

Beispielcode:

else:
    print("Falsch, es war diese Pointe")
Häufige Fehler
  • Großes E für Else verwendet
  • Doppelpunkt : nach dem else fehlt
  • print-Anweisung nicht eingerückt
  • else ist nicht auf gleicher Höhe wie if

5.4.8 A5: Weitere Witze hinzufügen

  • Überprüft doppelt, ob euer Code korrekt funktioniert. Er sollte Feedback geben, wenn der Benutzer richtig oder falsch liegt. Führt das Programm aus, um dies zu überprüfen, und testet jedes Szenario.
  • Fügt die anderen beiden Witze zum Programm hinzu.
  • Stellt sicher, dass ihr regelmäßig testet.
Häufige Fehler
  • Einrückungen an der falschen Stelle (vergleicht mit eurem ursprünglichen funktionierenden Codeblock, um zu überprüfen, ob eure Einrückungen übereinstimmen)
  • Fehlende Doppelpunkte
  • Großbuchstaben am Anfang von Schlüsselbegriffen verwendet: else, if, print

5.4.9 A06: Endgültigen Punktestand enthüllen

Hakt die Teilaufgaben ab, während ihr sie erledigt: - Verwendet eine print-Anweisung, um den endgültigen Punktestand dem Benutzer zu enthüllen - Testet euren Code

Häufige Fehler (verwendet diese Checkliste, um euren Code zu debuggen):

  • score = score + 1 wurde nicht korrekt in jede if-Anweisung eingefügt
  • Falsche Schreibweise der Punktestand-Variable

5.4.10 A07: Verbessert euer Spiel

Euer Benutzer könnte etwas eingeben, das korrekt ist, aber etwas anders formuliert ist. Zum Beispiel könnte er anstelle von “ein brauner Stock” einfach “brauner Stock” schreiben. Dies wäre immer noch eine korrekte Antwort.

Hakt die Teilaufgaben ab, während ihr sie erledigt: - Fügt einen elif-Block zu den Witzen “brauner Stock” und “Zeitung” hinzu, damit der Benutzer trotzdem einen Punkt erhält, wenn er das “ein” weglässt - Denkt daran, dass euer Benutzer auch für seine korrekte Antwort einen Punkt erhält - Testet euren Code

Beispielcode:

elif punchline == "BRAUNER STOCK":
    print("Du hast es erraten!")
    score = score + 1

Häufige Fehler (verwendet diese Checkliste, um euren Code zu debuggen):

  • Großes E für Elif anstelle von Kleinbuchstaben verwendet
  • Doppelpunkt : am Ende des elif fehlt
  • print und score sind im elif nicht eingerückt
  • elif an der falschen Stelle geschrieben (es sollte nach dem if und vor dem else stehen)

5.4.11 🔥 Bonus-Aufgaben

Hakt die Teilaufgaben ab, während ihr sie erledigt: - Verbessert das Spiel weiter, indem ihr über andere mögliche Antworten nachdenkt, die Benutzer geben könnten, und Feedback dafür bereitstellt - Verwendet eine weitere Bedingung, um dem Benutzer basierend auf seiner Punktzahl Feedback zu geben. Es sollte Feedback für 0, 1, 2 oder 3 Punkte geben