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:
Eingabe: Die unverarbeiteten Antworten erfassen.
Verarbeitung: Diese Antworten bereinigen oder umwandeln und dann mit Bedingungen ein Ergebnis auswählen.
Ausgabe: Das ausgewählte Ergebnis darstellen.

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:
Ist das Wetter
sunnyoder etwas anderes?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:
| Wetterantwort | Minuten | Erwartete Empfehlung |
|---|---|---|
SUNNY (mit Leerzeichen an beiden Enden) | 30 | Take a longer walk. |
sunny | 20 | Take a short walk. |
rain | 20 | Choose 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,elifundelsedie 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.