Savvy Handboek Hoofdstuk 5 - Werken met externe bestanden (proefexemplaren)

Page 1


Inhoudstafel

5.1         Soorten

5.2         Openen en sluiten van bestanden .................................................................................................

5.3

5.4         Toekenningsoperatoren ........................................................................................................................................

5.5         Meer mogelijkheden in de functie print (uitbreiding)

5.6

5.7

7 Wat is het verschil in de uitvoer van Boodschappen3.py en Boodschappen4.py?

Open Boodschappen5.py

with open("boodschappenlijst.txt","w") as fp: product = input("Welk product wil je op je boodschappenlijst plaatsen?

Eindig met Enter. ") while product != "" : fp.write(product + "\n") product = input("Welk product wil je op je boodschappenlijst?

Eindig met Enter. ")

8 Open boodschappenlijst.txt en controleer de inhoud.

Open Boodschappen6.py

with open("boodschappenlijst.txt","a") as fp: product = input("Welk product wil je toevoegen aan je boodschappenlijst?

Eindig met Enter. ") while product != "" : fp.write(product + "\n") product = input("Welk product wil je toevoegen aan je boodschappenlijst, eindig met Enter? ")

9 Open boodschappenlijst.txt en controleer de inhoud.

5.1 Soorten tekstbestanden

Om je programma te kunnen testen, moet je regelmatig hele reeksen gegevens invoeren. Dit telkens opnieuw ingeven, is niet efficiënt. Een praktische tip: maak een bestand aan met de waarden die je wil invoeren. Je kan dan snel en zonder problemen telkens dezelfde waarden gebruiken om je programma te testen.

Let op:

Zorg ervoor dat de bestanden die als input en output voor het programma worden gebruikt in dezelfde map staan als het programma zelf.

In dit boek beperken we ons tot tekstbestanden. Je leert twee soorten tekstbestanden gebruiken:

> Een eenvoudig tekstbestand met extensie .txt, gemaakt met kladblok of Notepad;

> Een CSV-bestand (Comma Seperated Values). Dit type bestand heeft als extensie .csv. Het is een veelgebruikt bestandsformaat voor het opslaan van tabelgegevens. Je kan het maken van een willekeurig Excel-bestand. Open hiervoor het Excel-bestand en bewaar het opnieuw als CSV-bestand. (CSV UTF-8 (door komma's gescheiden)(*.csv))

Als je een CSV-bestand opent in kladblok zie je dat elke rij uit je werkblad overeenkomt met een lijn in het tekstbestand. Tussen de verschillende waarden in een rij, m.a.w. de waarden in de kolommen, staat een puntkomma.

5.3 Gebruiken van bestanden

<fp>.read() Het hele bestand wordt in één string ingelezen.

<fp>.readline() Je leest één regel van het bestand en zet deze in een string Eén regel is alle tekst tot en met het volgende nieuwe regel (\n)-teken. Op deze manier kan je een bestand regel per regel inlezen. Readline gaat telkens verder met de volgende regel. Als je aan het einde van het bestand bent en je probeert een nieuwe regel te lezen, krijg je een lege string terug.

<fp>.write(<tekst>) Je schrijft de <tekst> op de positie van de pointer in het bestand. Meestal is dit op het einde van het bestand.

Aandachtspunten:

> Aan het einde van elke regel in een tekstbestand staat een \n, newline. Je kan dit vergelijken met de Enter waarop je duwt in een tekstverwerker om naar de volgende regel te gaan.

Als in een txt-bestand na het ingeven van de laatste regel niet op Enter is geduwd, staat op het einde van deze laatste regel geen \n.

> Je leest het \n-teken als je gebruik maakt van readline().

Gemiddelde en deviatie

Probleemstelling

In het bestand Punten.csv staan de punten van het examen wiskunde van een groep leerlingen. De leraar wil het gemiddelde te weten komen en wil ook graag weten hoeveel elke leerling daarvan afwijkt (de deviatie).

Maak een programma dat

1 de gegevens uit het bestand inleest in een lijst,

2 het gemiddelde berekent, 3 per leerling de afwijking van het gemiddelde berekent, 4 alle gegevens uitprint en de gegevens per leerling wegschrijft in het bestand Punten_gemiddelde.csv

Tip

Open het bestand Punten.csv in Excel en in kladblok. In Excel zie je duidelijk de verschillende kolommen en de gegevens van het bestand. In kladblok zie je de structuur van het tekstbestand.

Analyse

Invoer waarde type namen en punten uit het bestand Punten.csv list een lijst met lijsten die de namen en punten bevatten

Verwerking

Lees de gegevens in uit het bestand in een lijst met lijsten. Bereken het gemiddelde van de punten. Bereken de deviatie per leerling. Schrijf de gegevens per leerling in het bestand.

Uitvoer

waarde type gemiddelde integer deviatie integer

de gegevens per leerling in kolommen in het bestand Punten_gemiddelde.csv

Algoritme open punten.csv om te lezen lees de eerste regel gegevens_leerlingen = [] voor regel in fp herhaal voeg de gegevens van een leerling als een lijst van strings toe aan gegevens_leerlingen som = 0 bepaal aantal_lln herhaal voor rij in range(aantal_lln) punten van de lln op index rij = punten van de lln op index rij als integer voeg punten van de lln toe aan de som bereken gemiddelde als integer schrijf gemiddelde herhaal voor rij in range(aantal_lln) bereken de deviatie voeg deviatie toe aan de lijst open punten_gemiddelde.csv om te schrijven schrijf de titels van de kolommen schrijf per leerling de naam, punten en deviatie in het bestand

Programma

# Bereken het gemiddelde van de punten en de deviatie per leerling #

# Lees de gegevens van het bestand in een lijst met lijsten # De eerste lijn bevat de titels, die staan niet in de lijst with open("Punten.csv", "r") as fp: fp.readline() fp.readline() gegevens_leerlingen = [] for regel in fp: gegevens_lln = regel.split(";") gegevens_leerlingen.append(gegevens_lln)

# Bereken het gemiddelde van de punten som = 0 aantal_lln = len(gegevens_leerlingen) for rij in range(aantal_lln):

# Maak een integer van de punten in de laatste kolom en tel ze bij de som gegevens_leerlingen[rij][1] = int(gegevens_leerlingen[rij][1]) som += gegevens_leerlingen[rij][1] gemiddelde = round(som/aantal_lln) print(“Het gemiddelde is:”, gemiddelde)

# Bereken de deviatie en voeg die toe aan de lijst for rij in range(aantal_lln): deviatie = gegevens_leerlingen[rij][1] - gemiddelde gegevens_leerlingen[rij].append(deviatie)

# Plaats de gegevens in het bestand with open("punten_gemiddelde.csv", "w") as fp: fp.write("Naam;Punten;Deviatie\n") for rij in range(aantal_lln): regel = "" for kolom in range(3): regel += str(gegevens_leerlingen[rij][kolom]) + ";" # Op het einde staat een “;” teveel, verwijder die en voeg een “\n” toe regel = regel[:-1] + "\n" fp.write(regel)

Bewaar het programma onder de naam Punten_gemiddelde.py.

Testen

Voer het programma uit.

Tip

Bij het schrijven van een programma dat gegevens uit een bestand verwerkt, kan er altijd een logische fout optreden. Je hebt dan ergens een fout in je redenering gemaakt. Bevat je bestand veel gegevens, dan kan het runnen (uitvoeren) ervan een tijdje duren, terwijl je misschien al weet dat er een fout in staat. Je kan uiteraard de uitvoer van je programma afbreken, maar een efficiëntere manier van werken is om de begrensde herhaling te beperken tot de eerste 10 lijstelementen.Test hiermee tot het programma volledig juist is. Zet de begrensde herhaling nadien op het correcte aantal.

Aandachtspunten:

> Als je een regel uit het bestand inleest, krijg je een string. Zet deze om naar een lijst zodat je gemakkelijk met de verschillende gegevens kan werken. Gebruik hiervoor split, dit splitst een string en zet deze om naar een lijst van strings op basis van een teken.

> Je hebt meerdere keren de lengte van de lijst nodig, m.a.w. het totaal aantal leerlingen, vandaar dat je het in een variabele plaatst.

> Je moet de som berekenen van de punten, die staan als string in de lijst met op het einde een “\n”-teken. Maak er een integer van zodat je kan rekenen met het getal. Het “\n”-teken vormt geen probleem bij het omzetten naar een integer.

> Kap het gemiddelde af tot een integer met int. Je kan hier ook round(gemiddelde, 0) gebruiken. Het resultaat is dan een float die je nog eens naar integer zou moeten omzetten. Hou het eenvoudig en kap het gewoon af.

> Gebruik het speciale teken “\t” om de gegevens in kolommen te plaatsen. Dit is een tabteken

> Bij het schrijven naar het bestand moet je ervoor zorgen dat op het einde van een regel geen “;” staat maar wel een newline. Vandaar de instructie regel = regel[:-1] + “\n”.

5.4 Toekenningsoperatoren

Voor de expressie getal = getal + 5 bestaat een verkorte notatie.

verkorte notatie komt overeen met getal += 5 getal = getal + 5 getal -= 5 getal = getal - 5 getal *= 5 getal = getal * 5 getal /= 5 getal = getal / 5 getal //= 5 getal = getal // 5 getal %= 5 getal = getal % 5 getal **= 5 getal = getal ** 5 woord1 += woord2 woord1 = woord1 + woord2 woord *= 3 woord = woord * 3

5.5 Meer mogelijkheden in de functie print (uitbreiding)

De functie print heeft nog een aantal bijkomende parameters.

print({<tekst>} [,sep = <sep>][,end = <end>])

<sep>: bepaalt het scheidingsteken (het teken dat tussen de verschillende teksten in je printopdracht staat); standaard is dit “ ” (een spatie).

<end> bepaalt het teken dat op het einde van een printopdracht wordt geplaatst; standaard is dit “\n” (newline).

Voorbeelden:

instructie

print(“kostprijs:”, 5, “EUR”)

resultaat

kostprijs: 5 EUR print(“kostprijs:”, 5, “EUR”, sep=“”)

kostprijs:5EUR print(“kostprijs:”, 5, “EUR”, sep = “,”)

kostprijs:,5,EUR print(“januari”) print(“februari”)

januari februari print(“januari”, end = “”) print(“februari”, end = “”)

januarifebruari

Als we dit toepassen op onze boodschappenlijst, kan je Boodschappen4.py aanpassen. Bewaar het resultaat als Boodschappen7.py.

Open Boodschappen7.py

with open("boodschappenlijst.txt", "r") as fp: boodschappen = [] for regel in fp: boodschappen.append(regel) for lijn in boodschappen: print(lijn, end = "")

5.6 De datastructuur dictionary

Niet alle gegevens vormen een geordende lijst. Soms wil je een waarde zoeken op basis van een sleutelwaarde, zoals in een database. In zo’n geval kan je een associatieve array gebruiken.

Een associatieve array is een datastructuur waarmee door middel van een sleutel een waarde wordt gezocht.

In Python komt een associatieve array overeen met een dictionary (een datatypestructuur waarmee je gegevens kan opslaan als sleutel-waardeparen.) Dictionaries zijn handig wanneer je snel waarden wilt opzoeken op basis van een unieke sleutel. Ze zijn vergelijkbaar met een woordenboek, waarbij een woord (sleutel) je naar een definitie (waarde) leidt.

Voorbeelden:

fruitmand = {"appel": 2, "peer": 4, "appelsien": 2} landen_hoofdsteden = { "België":"Brussel", "Nederland":"Amsterdam", "Duitsland":"Berlijn", "Frankrijk":"Parijs" }

gsmnr = {"Guy":"0498 25 36 12", "An":"0476 78 56 32"} artikel = { "melk":["zuivel", 1.44, 100], "sla":["groente", 1.49, 50], "peer":["fruit", 1.99, 150], "rijst":["droogwaren", 3.49, 200] } film = { "Wicked":["Ariana Grande", "Cynthia Erivo", "Jonathan Bailey"], "Barbie":["Margot Robbie", "Ryan Gosling"], "Nosferatu":["Emma Corrin", "Aaron Taylor-Johnson"] }

leeg = {}

Aandachtspunten:

> Sleutels in een dictionary zijn doorgaans strings, maar het kunnen ook integers of floats zijn. In de voorbeelden en oefeningen gebruik je enkel strings.

> De waarden kunnen allerlei types hebben: strings, getallen, lijsten …

> Elke sleutel is uniek. Je kan geen dubbele sleutels hebben.

> De sleutels zijn allemaal verschillend – bij elke sleutel hoort precies één waarde, maar …

> Een waarde kan meerdere keren voorkomen in een dictionary. Twee verschillende sleutels kunnen dezelfde waarde hebben. In het voorbeeld van de films kunnen twee films dezelfde hoofdrolspelers hebben, denk bijvoorbeeld aan een sequel.

> Dictionaries zijn zeer efficiënt en snel voor het opzoeken van waarden op basis van sleutels.

> Dictionaries zijn zeer flexibel. Je kan gegevens eenvoudig toevoegen, verwijderen of wijzigen.

> Dictionaries kunnen niet gesorteerd of geïnverteerd worden.

Interpreteer en experimenteer

Taak

1 Lees onderstaande programma’s.

2 Wat denk je dat er gebeurt? Wat denk je dat de uitvoer is?

3 Open de programma’s in Thonny, voer ze uit en controleer of je veronderstelling juist is.

Open Punten.py

# Dictionary van studenten en hun punten punten = {"Emma": 85, "Feebe": 92, "Ward": 78, "Noah": 90} print("Punten van Noah:", punten["Noah"]) punten["Arthur"] = 88 punten["Feebe"] = 95 print(punten)

Open Landen_Hoofdsteden1.py.

landen_hoofdsteden = { "België":"Brussel", "Nederland":"Amsterdam", "Duitsland":"Berlijn", "Frankrijk":"Parijs" } if "Duitsland" in landen_hoofdsteden: print("De hoofdstad van Duitsland is", landen_hoofdsteden["Duitsland"] + ".")

Open WoordenTekst.py.

tekst = "Voetbal is een leuke sport turnen is een leuke sport iedereen heeft een favoriete sport"

woordenteller = {} woorden = tekst.split()

for woord in woorden: if woord in woordenteller: woordenteller[woord] = woordenteller[woord] + 1 else: woordenteller[woord] = 1

print("Woordfrequenties:") for woord in woordenteller.keys(): print(woord + ":", woordenteller[woord])

Taak

1 Open Landen_Hoofdsteden1.py.

2 Maak een programma dat een land en een hoofdstad inleest en controleert of de juiste hoofdstad is ingegeven. Je moet nog geen rekening houden met het feit dat het land eventueel niet in de dictionary staat.

3 Bewaar het bestand onder de naam Landen_Hoofdsteden2.py

Voorbeelden:

instructie

landen_hoofdsteden[“Italië”] = “Rome”

resultaat

landen_hoofdsteden = { “België”:“Brussel”, “Nederland”:“Amsterdam”, “Duitsland”:“Berlijn”, “Frankrijk”:“Parijs”, “Italië”:“Rome” }

gsmnr[“An”] = “0498 56 23 24”

gsmnr = {“Guy”:“0498 25 36 12”, “An”:“0498 56 23 24”} landen_hoofdsteden.update({“Spanje”:“Madrid”, “Portugal”:“Lissabon”})

landen_hoofdsteden = { “België”:“Brussel”, “Nederland”:“Amsterdam”, “Duitsland”:“Berlijn”, “Frankrijk”:“Parijs”, “Italië”:“Rome” “Spanje”:“Madrid”, “Portugal”:“Lissabon” } landen_hoofdsteden.pop[“Duitsland”]

landen_hoofdsteden = { “België”:“Brussel”, “Nederland”:“Amsterdam”, “Frankrijk”:“Parijs”, “Italië”:“Rome” “Spanje”:“Madrid”, “Portugal”:“Lissabon” }

Functie op een dictionary

len(<dictionary>) Geeft als terugkeerwaarde het aantal sleutel-waardeparen in de <dictionary>.

Engels leren

Probleemstelling

Je beschikt over een bestand Ndl_Eng.csv met een verzameling veelgebruikte Engelse woorden. Maak een programma dat dit bestand inleest in een dictionary en vervolgens at random een Nederlands woord presenteert, waarna de juiste Engelse vertaling moet worden ingetypt. Is de vertaling fout, dan verschijnt de juiste vertaling. Bij de start van het programma geef je in hoeveel woorden je wilt oefenen. Het programma houdt bij hoeveel woorden je juist hebt en hoeveel fout.

Analyse

Invoer

waarde type

Nederlandse woorden en hun Engelse vertaling uit het bestand Ndl_Eng.csv

dictionary een dictionary met als sleutel het Nederlandse woord en als waarde de Engelse vertaling aantal integer

Verwerking

initialiseer het aantal juist en het aantal fout herhaal voor teller van 1 tot aantal kies random woord toon random woord lees vertaling zeg of vertaling juist of fout is, als fout geef juiste vertaling verhoog aantal juist of aantal fout

Uitvoer

waarde type juist integer fout integer

Probleemstelling

open Ndl_Eng.csv om te lezen inhoud = {} herhaal voor elke regel in het bestand splits de woorden op basis van “;” voeg het Nederlandse en Engelse woord als sleutel-woordenpaar toe aan de dictionary, verwijder “\n” uit het Engelse woord lees aantal initialiseer juist en fout op 0 herhaal voor teller in range(aantal) kies at random een Nederlands woord ndl (key) lees een vertaling eng in als eng == waarde die hoort bij sleutel ndl dan schrijf correct verhoog juist met 1 zoniet

schrijf juiste Engelse woord verhoog fout met 1

schrijf juist

schrijf fout

Programma

# Maak een programma om je Engelse woordenschat te oefenen

#

# Importeer de softwarebibliotheek random import random

# Functie lees bestand def lees_bestand(bestandsnaam): with open(bestandsnaam, "r") as fp: inhoud = {} for regel in fp:

# Splits de ingelezen lijn in woorden bij elke puntkomma woorden = regel.split(";")

# Voeg een Nederlands woord met vertaling toe aan de dictionary

# Verwijder \n uit de Engelse vertaling inhoud[woorden[0]] = woorden[1][:-1] return(inhoud)

# Hoofdprogramma

woordenboek = lees_bestand("Ndl_Eng.csv")

# Lees het aantal woorden in dat je wil oefenen aantal = int(input("Hoeveel woorden wil je oefenen? "))

# Zet het aantal juiste vertalingen en foute vertalingen op 0 juist = 0 fout = 0

for teller in range(aantal):

# Willekeurig woord selecteren ndl = random.choice(list(woordenboek.keys()))

# Vraag de gebruiker om de vertaling print("Wat is de vertaling van", ndl + "?") eng = input("Je vertaling: ")

# Antwoord controleren if eng == woordenboek[ndl]: print("Correct!")

juist = juist + 1 else:

print("Fout! De juiste vertaling is:", woordenboek[ndl]) fout = fout + 1

# Print het aantal juiste en foute vertalingen print("Aantal juiste vertalingen:", juist) print("Aantal foute vertalingen:", fout)

Bewaar het programma onder de naam EngelsLeren1.py

Tip

Maak eerst een kleiner bestand Ndl_Eng.csv om te testen.

Interpreteer en experimenteer

Pas het programma EngelsLeren1.py aan zodat eenzelfde Nederlands woord niet meerdere keren kan voorkomen in een oefening. Gebruik een list om de gebruikte woorden in op te slaan.

Bewaar het programma onder de naam EngelsLeren2.py

Gemiddeld

4 De klasleraar wil de leerlingen in zijn klas een andere plaats geven. Hij laat de computer de verdeling bepalen. Je beschikt over een bestand Klas.txt met de namen van de leerlingen in de klas. Maak een programma dat de leerlingen een willekeurige plaats geeft in de klas. De banken in de klas zijn genummerd van 1 tot het aantal leerlingen. Zorg ervoor dat elke leerling een ander banknummer krijgt. Lees de namen van de leerlingen in een list van lijsten. Elke naam is het eerste element van de deellijst. Achter elke naam staat een \n in het bestand. Voeg als tweede element het banknummer toe.

Schrijf de nieuwe gegevens in het bestand Klasnr.txt. Tussen de naam en het banknummer staat een puntkomma. Elke lijn eindigt op \n.

Bewaar dit programma onder de naam PlaatsInKlas.py.

5 Het bestand Chocola.txt bevat een tekst. Je wilt deze tekst als artikel indienen voor een tijdschrift. Er staat echter een beperking op het aantal woorden. Maak een programma met daarin een functie aantal() die het aantal woorden in het bestand telt. Alles wat geen letter is, wordt beschouwd als een woordscheider. Je maakt geen onderscheid tussen hoofd- en kleine letters.

Tip

> Gebruik een logische variabele die je op True zet bij de start van een woord en op False bij het einde van een woord.

> Zoek in het vorige hoofdstuk een methode of functie die je kan gebruiken om te controleren of een teken een letter is.

vb. De tekst bevat 198 woorden.

Bewaar het programma onder de naam AantalWoorden.py

6 Je werkt verder op het bestand Chocola.txt. Maak een programma dat controleert welke letters in de tekst zitten en hoeveel keer elke letter voorkomt. Tel enkel de letters die in de tekst voorkomen. Maak geen onderscheid tussen hoofd- en kleine letters. Maak gebruik van een dictionary.

vb. d: 68 e: 201 p: 17 r: 82 o: 93 u: 15 c: 50 t: 66 i: 47 v: 26 a: 94

Bewaar het programma onder de naam Letterteller.py

7 Een leraar wil een programma om snel te weten wat de resultaten zijn van een toets. De leraar geeft na elke toets in het bestand Toets.txt een aantal gegevens in:

> het maximum te behalen of m.a.w. op hoeveel punten de toets stond,

> hoeveel leerlingen de test aflegden,

> alle afzonderlijke resultaten die de leerlingen op de toets haalden.

Als uitvoer krijgt hij het totaal aantal leerlingen dat slaagde voor de toets en het aantal dat niet slaagde. Op het einde verschijnt een besluit voor de leraar (als 80% van de leerlingen slaagde, dan hebben de leerlingen de les begrepen).

Maak dit programma. Werk verder op het programma Geslaagd1.py met daarin de functie IsGeslaagd().

vb. aantal geslaagd: 12 aantal niet geslaagd: 3

61% van de leerlingen is geslaagd.

De leerlingen hebben de les niet begrepen.

Bewaar het programma onder de naam Geslaagd2.py

8 Er is iets aan de hand met één van je zonnepanelen. De opbrengst ligt lager dan bij de andere panelen. Waarschijnlijk werkt één van de cellen niet goed. De opbrengst in Wp (Wattpiek) van elke cel van het zonnepaneel werd ingelezen in een CSV-bestand, Zonnepaneel.csv. Het zonnepaneel in kwestie heeft 60 cellen (10 rijen van 6 kolommen). Welke cel werkt er niet goed? (Een cel werkt niet goed als er een afwijking is van minimum 1 Wp van het gemiddelde.)

Tip

Bereken het volledige gemiddelde en overloop elke cel om na te gaan of dit (ver) onder het te verwachten gemiddelde ligt.

vb. kapotte cel: rij 9 kolom 2 gemiddelde opbrengst cel: 3.5 Wp opbrengst kapotte cel: 1.2 Wp

Bewaar het programma onder de naam Zonnepaneel.py

gevorderd

9

In het bestand Landen.csv staan alle landen opgelijst die op 2025-01-01 erkend zijn door de Verenigde Naties.

Ook het werelddeel waarin ze liggen, hun hoofdstad en de talen die er in dit land gesproken worden staan erbij.

Gebruik voor dit bestand als encoding “UTF-8”.

Programmeer een quiz waarin de speler eerst het onderwerp kan kiezen:

1 Werelddeel

2 Hoofdstad

Vraag de speler hoeveel landen een ronde moet bevatten.

De computer kiest willekeurige landen uit de lijst waarbij er niet twee keer hetzelfde land wordt aangeboden.

Maak een zelfgedefinieerde functie controle_antwoord() die onafhankelijk van het onderwerp kan worden gebruikt om te testen of het gegeven antwoord juist is of niet. Let op: een land kan tot meer dan één werelddeel behoren; Turkije bijvoorbeeld ligt in Europa en Azië. Het is voldoende als één werelddeel wordt gegeven.

Geeft de speler een fout antwoord, dan verschijnt het juiste antwoord.

Op het einde van het programma verschijnt het aantal juiste en het aantal foute antwoorden.

Bewaar het programma onder de naam Quiz.py.

10 Programmeer een woordraadspel. In het bestand Woordspel.txt staan meerdere woorden waarvan er één geraden moet worden. Elk woord staat in hoofdletters. Het programma kiest willekeurig één van die woorden. De speler krijgt een aantal levens om het woord te raden.

Werkwijze:

1 Kies een willekeurig woord uit het bestand.

2 Initialiseer het aantal levens van de speler. De speler krijgt 5 levens.

3 Toon de speler hoeveel levens hij/zij nog heeft.

4 Laat de speler een letter ingeven en controleer of die letter voorkomt in het te raden woord. Als dat zo is, toon het geheime woord met de geraden letters op de juiste plaatsen, duid de andere (nog niet geraden) letters aan met puntjes.

5 Vraag of de speler het geheime woord al wil raden. Wil de speler dit, dan kan hij/zij een woord ingeven. Is het woord juist, dan eindigt het spel.

6 Herhaal vanaf 4 tot de speler een foute letter ingeeft.

7 Komt de ingegeven letter niet voor in het woord, dan vermindert het aantal levens van de speler en begint alles opnieuw vanaf 3 tot er geen levens meer zijn of het woord geraden is.

8 Is het woord niet geraden, dan wordt het getoond.

9 Toon een overwinningsbericht als de speler het woord heeft geraden en een verliesbericht als de levens van de speler op zijn.

Bewaar het programma onder de naam Woordspel.py.

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.
Savvy Handboek Hoofdstuk 5 - Werken met externe bestanden (proefexemplaren) by die Keure - Issuu