0%

Programma’s plannen, bouwen en testen · eindproject

Eindproject: Project: bereid je quizprogramma voor

Het quizprogramma was dit hele hoofdstuk onze werkbank. Hoofdstuk 12 maakt er het eindproject van, met een onderwerp dat je zelf kiest. Verzamel voordat je de interactieve lus en het scorerapport bouwt de bekende gegevensregels en het kleinste herbruikbare gedrag in één blauwdruk.

Zo wordt een groter project behapbaar. Je bouwt niet in één keer een heel quizprogramma. Je voltooit een geteste blauwdruk met duidelijke grenzen, onderdeel voor onderdeel.

Schrijf de opdrachtomschrijving

Het uiteindelijke programma zal:

  • een quiztitel en minstens drie vraagrecords bewaren;

  • elke vraag stellen;

  • antwoorden vergelijken zonder rekening te houden met hoofdletters en spaties aan de buitenkant;

  • de score bijhouden en rapporteren;

  • een leeg antwoord afwijzen en dezelfde vraag opnieuw stellen;

  • netjes eindigen na de laatste vraag.

Dit hoofdstuk bereidt het opgeslagen plan, de hulpfuncties voor antwoordvergelijking en een gereedheidscontrole voor. Hoofdstuk 12 voegt het stellen van vragen, het bijhouden van de score en het eindrapport toe.

Modelleer één vraag

Elk vraagrecord heeft dezelfde verplichte sleutels:

{
    "prompt": "Which material do bees make?",
    "answer": "honey",
}

De vraagtekst is wat de cursist ziet. Het antwoord is de waarde die voor vergelijking wordt gebruikt.

Bewaar de records in een lijst en zet die lijst samen met de titel in één dictionary:

quiz_plan = {
    "title": "A Subject You Choose",
    "questions": [
        # consistently shaped question dictionaries
    ],
}

Deze structuur kan direct mee naar het eindproject.

Leg de antwoordregel één keer vast

De vergelijkingsregel is:

Negeer hoofdletters en witruimte aan de buitenkant, maar eis verder dat het volledige antwoord overeenkomt.

Zet het opschonen in één functie en het vergelijken in een andere. Dan gebruikt elke vraag dezelfde regel.

Test beide paden:

  • versies van hetzelfde antwoord met andere hoofdletters en extra spaties komen overeen;

  • een werkelijk ander antwoord komt niet overeen.

Valideer het plan zelf

Een blauwdruk is pas klaar wanneer:

  • de titel niet leeg is;

  • er minstens drie vragen zijn;

  • elke vraag een niet-lege vraagtekst en een niet-leeg antwoord heeft;

  • vraagteksten na het opschonen uniek zijn.

Een functie plan_is_ready(plan) kan die eisen controleren voordat het interactieve programma op de gegevens vertrouwt.

Neem voor deze controle aan dat het buitenste plan al een string "title" en een lijst "questions" met dictionaries heeft en dat aanwezige waarden voor vraagtekst en antwoord strings zijn. Controleer binnen die grens de genoemde regels voor inhoud en recordvorm.

Dit is validatie van gegevens die de ontwikkelaar heeft geschreven, niet van echte gebruikersinvoer. Hier is True of False teruggeven voldoende. Hoofdstuk 12 gebruikt een herhaallus voor de persoon die de quiz maakt.

Behoud je eigen onderwerp

Kies een onderwerp waarover je kloppende vragen kunt schrijven. Dat kan muziek, tuinieren, aardrijkskunde, handwerk, sport, geschiedenis, koken, films, wetenschap of iets anders zijn.

De beoordelaar controleert de structuur en het gedrag, niet één voorgeschreven onderwerp. Je vragen en antwoorden moeten betekenisvol en verschillend zijn.

Bewaar de blauwdruk wanneer deze les is goedgekeurd. De eerste mijlpaal van hoofdstuk 12 vraagt je om quiz_plan, clean_answer en answers_match over te nemen in de blijvende werkruimte van het eindproject.

Welk onderdeel hoort bij deze mijlpaal voor de blauwdruk en niet bij de latere interactieve quizlus?

Wat moet answers_match(" PACIFIC ", "pacific") volgens de geplande regel teruggeven?

Opdracht

Bereid een persoonlijke blauwdruk voor een quizprogramma voor.

  1. Vervang de tijdelijke titel en alle drie tijdelijke vraagrecords door een eigen onderwerp en kloppende vragen. Je mag meer vragen toevoegen.

  2. Implementeer clean_answer(text) om witruimte aan de buitenkant te verwijderen en hoofdletters te negeren.

  3. Implementeer answers_match(given, expected) met clean_answer.

  4. Implementeer plan_is_ready(plan) volgens deze afspraak:

    • niet-lege titel;

    • minstens drie vragen;

    • elke vraag heeft precies de verplichte velden "prompt" en "answer" met niet-lege tekst;

    • vraagteksten zijn na het opschonen uniek.

  5. Behoud de voorbereide asserties en de samenvatting van de blauwdruk.

Je kiest zelf de exacte titel en vragen. De uiteindelijke uitvoer moet deze vorm hebben:

QUIZ BLUEPRINT
Title: your chosen title
Questions: 3
Answer checks passed.

Het aantal mag groter zijn dan 3 als je meer vragen toevoegt.