0%

Eindproject: bouw een quizprogramma · oefening

Houd lege antwoorden buiten

De antwoordlogica werkt met vaste strings. Voeg nu de eerste interactieve grens toe: haal één niet-leeg antwoord op.

Houd deze taak in een eigen functie.

Leeg na het opschonen is nog steeds leeg

Zowel "" (een leeg antwoord) als " " (drie spaties) moet worden afgewezen. De spaties zijn tekens, maar .strip() verwijdert ze en geeft "" terug.

Een tekstantwoord zoals "0" is niet leeg en moet worden geaccepteerd. Deze functie valideert aanwezigheid, niet juistheid.

Benoem de belofte van de functie

read_nonempty_answer(prompt):

  1. toont de meegegeven vraag;

  2. haalt een antwoord op;

  3. verwijdert witruimte aan de buitenkant;

  4. geeft het opgeschoonde antwoord terug wanneer het niet leeg is;

  5. drukt anders "Please enter an answer." af en herhaalt.

De functie kent het verwachte quizantwoord niet. Ze dwingt één invoerregel af die alle vragen delen.

Volg het pad voor opnieuw proberen

Voor een leeg antwoord gevolgd door " maple ":

PogingOpgeschoonde waardeActie
eerste""druk uitleg af en herhaal
tweede"maple"geef "maple" terug

return verlaat zowel de lus als de functie. Er is geen aparte break nodig.

Zorg dat het programma verder kan

De vraag en de aanroep van input() moeten binnen de lus staan. Elk ongeldig pad moet een nieuwe invoeraanroep bereiken.

Het platform kan een programma stoppen dat niet lijkt te eindigen, maar het juiste ontwerp blijft een lus met een bereikbaar terugkeerpad.

Vergelijk hier niet

Het kan verleidelijk zijn om deze functie ook het vraagrecord te geven en de juistheid te laten controleren. Doe dat in deze mijlpaal niet.

Eén functie haalt geldige tekst op. De volgende functie combineert het ophalen met feedback op het antwoord.

Wat moet read_nonempty_answer() doen wanneer de gebruiker drie spaties invoert?

Opdracht

Implementeer read_nonempty_answer(prompt).

  • Blijf de meegegeven vraag stellen.

  • Verwijder witruimte aan de buitenkant van de ingevoerde tekst.

  • Druk Please enter an answer. af en herhaal als het opgeschoonde antwoord leeg is.

  • Geef het eerste niet-lege opgeschoonde antwoord terug.

Behoud alle afgeronde functies uit de eerdere mijlpalen. Submit controleert meerdere paden met niet-lege antwoorden en nieuwe pogingen.

Voeg om deze functie met Run te proberen tijdelijk deze aanroep toe onder de definities en bestaande asserties:

print(read_nonempty_answer("Practice answer: "))

Probeer een leeg antwoord, een antwoord met alleen spaties en MiXeD . De eerste twee moeten tot herhaling leiden; de teruggegeven tekst moet MiXeD zijn. Probeer ook 0, wat niet-lege tekst is.

Verwijder de tijdelijke aanroep vóór Submit en voordat je verdergaat. Behoud de niet-interactieve asserties; die controleren de hulpfuncties zonder om invoer te vragen.