0%

Entscheidungen treffen · Übung

Mach aus Antworten Entscheidungen

Du hast Entscheidungen zuerst mit festen Werten geübt. In dieser Lektion fragt dein Programm Werte ab und wählt damit eine Antwort aus.

Die Python-Konzepte bleiben dieselben. Der Unterschied ist, dass die Ausgangswerte jetzt aus deinen Terminaleingaben stammen.

Lies die drei Beispiele unten und verfolge, wie eine Antwort zu einer Entscheidung führt. Erstelle dann die Wetterempfehlung im Editor dieser Lektion und führe sie aus. In seinem Terminal kannst du Antworten eintippen und Enter drücken, wie in Kapitel 3.

Plane zuerst Eingabe, Verarbeitung und Ausgabe

In Kapitel 3 hast du das Muster Eingabe, Verarbeitung, Ausgabe kennengelernt. Für eine interaktive Entscheidung ist es besonders hilfreich, weil es drei Aufgaben trennt:

  1. Eingabe: Die unverarbeiteten Antworten erfassen.

  2. Verarbeitung: Diese Antworten bereinigen oder umwandeln und dann mit Bedingungen ein Ergebnis auswählen.

  3. Ausgabe: Das ausgewählte Ergebnis darstellen.

Eingegebene Antworten durchlaufen Bereinigung, Umwandlung und Entscheidungslogik, um eine Empfehlung zu erzeugen.

Die Verarbeitung berechnet jetzt mehr als nur eine Zahl. Sie bereitet die Antworten vor und entscheidet, welchem Weg das Programm folgt. Diese Aufgaben zwischen Eingabe und Ausgabe zu halten macht das Programm leichter nachvollziehbar und prüfbar. Im Diagramm stehen INPUT/ANSWERS für „Eingabe/Antworten“, PROCESS für „Verarbeitung“, CLEAN/CONVERT/DECIDE für „bereinigen/umwandeln/entscheiden“ und OUTPUT/RECOMMENDATION für „Ausgabe/Empfehlung“.

Plane eine interaktive Entscheidung vor dem Schreiben des Codes mit drei Fragen:

  • Welche Antworten braucht das Programm?

  • Wie müssen diese Antworten vorbereitet werden, und welche Regeln wählen das Ergebnis aus?

  • Was soll das Programm am Ende anzeigen?

Bereinige Text vor dem Vergleichen

input() gibt immer einen String zurück. Vielleicht verwendest du eine andere Groß- und Kleinschreibung oder fügst Leerzeichen um eine Antwort ein. Wende vor dem Vergleichen die String-Methoden aus Kapitel 4 an:

setting = input("Choose indoor or outdoor: ").strip().lower()

if setting == "outdoor":
    print("You chose an outdoor plan.")
elif setting == "indoor":
    print("You chose an indoor plan.")
else:
    print("That choice is not recognized.")

Kapitel 4 hat die Methodenverkettung eingeführt. Hier gibt input() einen String zurück, .strip() liefert einen String ohne umgebende Leerraumzeichen, und .lower() wird auf diesem Rückgabewert aufgerufen.

Wenn du OUTDOOR eingibst, erzeugen die verketteten Aufrufe "outdoor". Die erste Bedingung kann dann zutreffen.

Wenn du ein anderes Wort eingibst, liefert das abschließende else trotzdem ein Ergebnis. Es fragt nicht erneut. Wiederholen, bis die Eingabe geeignet ist, erfordert Schleifen. Diese kommen später.

Wandle numerische Eingaben vor dem Vergleichen um

Ein String und eine ganze Zahl lassen sich nicht vergleichen, als wären beide Zahlen. Wandle die Antwort zuerst um:

minutes = int(input("How many minutes are available? "))

if minutes < 30:
    print("Choose a short activity.")
else:
    print("There is time for a longer activity.")

Der Aufruf von int() gibt eine ganze Zahl zurück. Der Vergleich minutes < 30 vergleicht deshalb zwei Zahlen.

Eine Antwort von 20 wählt zum Beispiel die kurze Aktivität, 30 die längere. Verwende ganze Zahlen, wenn du die Übung unten testest. Der Umgang mit Text, der sich nicht umwandeln lässt, gehört ins spätere Kapitel über Fehler und Validierung.

Verbinde mehr als eine Antwort

Sobald jede Antwort die richtige Form hat, verwende dieselben Bedingungen, die du mit festen Daten geübt hast:

pace = input("Choose quiet or active: ").strip().lower()
minutes = int(input("How many minutes are available? "))

if pace == "active" and minutes >= 45:
    recommendation = "Try a longer active session."
elif pace == "active":
    recommendation = "Try a short active session."
else:
    recommendation = "Choose a quiet activity."

print(recommendation)

Die Reihenfolge der Bedingungen ist wichtig. Der erste Zweig behandelt den engeren Fall: aktiv mit mindestens 45 Minuten. Der zweite fängt andere aktive Antworten auf. Der letzte behandelt jede andere bereinigte Antwort.

Dieser Wissenscheck verwendet einen festen Wert statt einer Live-Eingabe. Was gibt der Code aus?

weather = "  SUNNY  ".strip().lower()
if weather == "sunny":
    print("Outdoor option")
else:
    print("Indoor option")

Empfiehl einen kurzen oder langen Plan

Deine Übung stellt zwei Fragen:

  1. Ist das Wetter sunny oder etwas anderes?

  2. Wie viele Minuten stehen zur Verfügung?

Bereinige die Wetterantwort und wandle die Minuten in eine ganze Zahl um. Wähle dann eine Empfehlung:

  • sonnig mit mindestens 30 Minuten: Take a longer walk.;

  • sonnig mit weniger als 30 Minuten: Take a short walk.;

  • jedes andere Wetter: Choose an indoor activity..

Öffne Editor, vervollständige die Entscheidung und klicke auf Run. Tippe bei jeder Frage deine Antwort ins Terminal und drücke Enter. Führe das Programm für jeden dieser Fälle erneut aus:

WetterantwortMinutenErwartete Empfehlung
SUNNY (mit Leerzeichen an beiden Enden)30Take a longer walk.
sunny20Take a short walk.
rain20Choose an indoor activity.

Der erste Fall prüft die Textbereinigung und die Grenze von 30 Minuten. Die anderen beiden prüfen die übrigen Zweige. Wenn alle drei funktionieren, klicke auf Submit, um deine Lösung mit nicht sichtbaren Antworten zu prüfen.

Aufgabe

Vervollständige die interaktive Empfehlung.

  • Bereinige die Wetterantwort mit .strip().lower().

  • Wandle die Minutenantwort mit int() um.

  • Wähle mit if, elif und else die geforderte Empfehlung aus.

  • Behalte die vorgegebenen Fragen und den abschließenden Ausgabeaufruf bei.

Klicke auf Run und beantworte jede Frage im Terminal. Drücke nach jeder Antwort Enter. Probiere SUNNY mit 30 Minuten, sunny mit 20 und rain mit 20, um alle drei Wege auszuführen. Gib ganze Zahlen für die Minuten ein.

Klicke dann auf Submit, um deine Lösung mit nicht sichtbaren Antworten zu prüfen.