Beslissingen nemen · oefening
Maak beslissingen op basis van antwoorden
Je oefende beslissingen eerst met vaste waarden. In deze les vraagt je programma om waarden en gebruikt het die om een reactie te kiezen.
De Python-ideeën blijven hetzelfde. Het verschil is dat de beginwaarden nu komen van wat je in de terminal invoert.
Lees de drie voorbeelden hieronder om te volgen hoe een antwoord bij een beslissing terechtkomt. Bouw daarna het weeradvies in de Editor van deze les en voer het uit. In de terminal kun je antwoorden typen en op Enter drukken, net als in hoofdstuk 3.
Plan eerst invoer, verwerking en uitvoer
In hoofdstuk 3 leerde je het patroon Input, Process, Output. Dat is vooral handig bij een interactieve beslissing, omdat het drie verschillende taken scheidt:
Invoer: verzamel de onbewerkte antwoorden.
Verwerking: schoon de antwoorden op of zet ze om en gebruik daarna voorwaarden om een resultaat te kiezen.
Uitvoer: toon het gekozen resultaat.

De verwerking doet nu meer dan een getal berekenen. Ze bereidt de antwoorden voor en bepaalt welk pad het programma volgt. Door die taken tussen invoer en uitvoer te houden, kun je het programma makkelijker volgen en testen. De Engelse diagramlabels staan voor invoer en antwoorden, verwerken door opschonen, omzetten en beslissen, en uitvoer als aanbeveling.
Plan een interactieve beslissing vóór het programmeren met drie vragen:
Welke antwoorden heeft het programma nodig?
Hoe moeten die antwoorden worden voorbereid en welke regels kiezen het resultaat?
Wat moet het programma aan het einde tonen?
Schoon tekst op voordat je die vergelijkt
input() geeft altijd een string terug. Je kunt andere hoofdletters gebruiken of spaties rond een antwoord toevoegen. Gebruik de stringmethoden uit hoofdstuk 4 voordat je gaat vergelijken:
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.")
In hoofdstuk 4 leerde je methoden aan elkaar koppelen. Hier geeft input() een string terug, geeft .strip() een string zonder witruimte aan de randen terug en wordt .lower() op die teruggegeven string aangeroepen.
Als je OUTDOOR invoert, leveren de gekoppelde aanroepen "outdoor" op. De eerste voorwaarde kan daar vervolgens aan voldoen.
Als je een ander woord invoert, geeft de laatste else je nog steeds een resultaat. Het programma stelt de vraag niet opnieuw. Herhalen totdat de invoer geschikt is, vereist lussen. Die komen later.
Zet getalinvoer om voordat je vergelijkt
Je kunt een string en een geheel getal niet vergelijken alsof het allebei getallen zijn. Zet het antwoord eerst om:
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.")
De aanroep van int() geeft een geheel getal terug. De vergelijking minutes < 30 vergelijkt dus twee getallen.
Een antwoord van 20 kiest bijvoorbeeld de korte activiteit; 30 kiest de langere. Gebruik gehele getallen wanneer je de oefening hieronder test. Tekst afhandelen die niet kan worden omgezet, hoort bij het latere hoofdstuk over fouten en validatie.
Combineer meer dan één antwoord
Zodra elk antwoord de juiste vorm heeft, gebruik je dezelfde voorwaarden als bij de oefeningen met vaste gegevens:
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)
De volgorde van de voorwaarden is belangrijk. De eerste tak behandelt het specifiekere geval: actief met minstens 45 minuten. De tweede tak vangt andere actieve antwoorden op. De laatste tak behandelt elk ander opgeschoond antwoord.
Deze quiz gebruikt een vaste waarde in plaats van live invoer. Wat drukt de code af?
weather = " SUNNY ".strip().lower()
if weather == "sunny":
print("Outdoor option")
else:
print("Indoor option")Beveel een kort of lang plan aan
Je oefening stelt twee vragen:
Is het weer
sunnyof iets anders?Hoeveel minuten zijn er beschikbaar?
Schoon het weerantwoord op en zet de minuten om in een geheel getal. Kies daarna één aanbeveling:
zonnig met minstens 30 minuten:
Take a longer walk.;zonnig met minder dan 30 minuten:
Take a short walk.;elk ander weer:
Choose an indoor activity..
Open Editor, maak de beslissing af en klik op Run. Typ bij elke vraag je antwoord in de terminal en druk op Enter. Voer het programma opnieuw uit voor elk van deze gevallen:
| Weerantwoord | Minuten | Verwachte aanbeveling |
|---|---|---|
SUNNY (met spaties aan beide kanten) | 30 | Take a longer walk. |
sunny | 20 | Take a short walk. |
rain | 20 | Choose an indoor activity. |
Het eerste geval controleert het opschonen van tekst en de grens van 30 minuten. De andere twee controleren de overige takken. Klik op Submit zodra ze alle drie werken om je oplossing met afgeschermde antwoorden te controleren.
Opdracht
Maak het interactieve adviesprogramma af.
Schoon het weerantwoord op met
.strip().lower().Zet het minutenantwoord om met
int().Gebruik
if,elifenelseom de vereiste aanbeveling te kiezen.Behoud de meegeleverde vragen en de laatste printaanroep.
Klik op Run en beantwoord elke vraag in de terminal. Druk na elk antwoord op Enter. Probeer SUNNY met 30 minuten, sunny met 20 en rain met 20 om alle drie de paden te doorlopen. Voer gehele getallen in voor de minuten.
Klik daarna op Submit om je oplossing met afgeschermde antwoorden te controleren.