H7 - While : UITWERKINGEN
Opdracht 7.1 Voorspellen wat een while
doet.
|
|  |
- Op regel 1 krijgt getal de waarde 0, en op regel 2 wordt dat geprint.
- Regel 3: Zolang het getal onder de 10 is wordt het blok onder de
while uitgevoerd.
- Regels 4 en 5 horen bij het
while-blok en worden dus uitgevoerd: het getal wordt met 2 opgehoogd en daarna geprint.
- De code springt terug naar regel 3 en controleert opnieuw of het getal kleiner is dan 10. Is het getal kleiner dan 10, dan wordt de
while-loop opnieuw uitgevoerd (regels 4 en 5). Is het getal niet kleiner dan 10, dan springt de code voorbij de while-loop naar regel 7 en wordt geprint: "Klaar!".
|
Opdracht 7.2 Aftellen
print("Vanaf welk getal wil je aftellen?")
invoer = input()
tijd = int( invoer )
while tijd > 0:
print("tijd is", tijd)
tijd -= 1
print("AF!")
Opdracht 7.3 Driehoekkunst
import turtle
### FUNCTIEDEFINITIE
#tekent een driehoek met de gegeven lengte
def tekenDriehoek( lengte ):
turtle.forward( lengte )
turtle.right( 120 )
turtle.forward( lengte )
turtle.right( 120 )
turtle.forward( lengte )
turtle.right( 120 )
def vraagGebruikerOmLengte():
print("Geef een getal tussen de 50 en 200:")
invoer = input()
lengte = int (invoer)
print( "De eerste driehoek wordt", lengte, "groot.")
return lengte
### HOOFDPROGRAMMA
turtle.pendown()
lengte = vraagGebruikerOmLengte()
while lengte > 10:
tekenDriehoek( lengte )
lengte = lengte - 10 #kan ook met: lengte -= 10
turtle.done()
Opdracht 7.4 Aaa!
aantal_a= 0
while aantal_a < 3:
print( "a" )
aantal_a += 1
print("Klaar!")
Opdracht 7.5 Strafregels
aantal_strafregels= 0
while aantal_strafregels < 100:
print( "Ik mag code niet kopieren van een ander." )
aantal_strafregels += 1
print("Klaar!")
Opdracht 7.6 Toegang met wachtwoord
WACHTWOORD = "Geheim"
goed_geraden = False #om te beginnen staat de vlag op False
while not goed_geraden: #herhaal zolang vlag nog op False staat
print( "Voer wachtwoord in: " ) #vraag het wachtwoord
invoer = input()
if invoer == WACHTWOORD: #goed geraden
print("Goed zo!")
goed_geraden = True #de vlag wordt op True gezet, hierna zal de while loop niet opnieuw uitgevoerd gaan worden
else: #fout geraden
print("Fout... probeer het opnieuw")
Opdracht 7.7 Raad het geheime getal
import random
#GLOBALE VARIABELEN
TE_RADEN_GETAL = random.randint(0,100) #computer kiest een willekeurit getal tussen 0 en 100 (0 of 100 kan ook)
#HOOFDPROGRAMMA
goed_geraden = False #om te beginnen staat de vlag op False
while not goed_geraden: #herhaal zolang vlag nog op False staat
print( "Gok een getal tussen de 0 en 100 (0 of 100 mag ook)!" )
invoer = input()
gebruikers_antwoord = int( invoer )
if gebruikers_antwoord == TE_RADEN_GETAL: #goed geraden
print("Goed geraden!")
goed_geraden = True #de vlag wordt op True gezet, hierna zal de while loop niet opnieuw uitgevoerd gaan worden
else: #fout geraden
print("Jammer, fout... probeer het opnieuw")
print("Bedankt voor het spelen")
Opdracht 7.8 Herhaaldelijk complimentjes geven
gebruiker_wil_stoppen = False
while not gebruiker_wil_stoppen:
print("Typ J voor een complimentje")
print("Gebruik een andere toets als je geen complimentje wilt.")
invoer = input()
if invoer == "J":
print( "Ik vind je aardig!" )
else:
gebruiker_wil_stoppen = True
print("Wat jammer dat je geen complimentje meer wilt ontvangen.")
Opdracht 7.9 Som van een aantal getallen. De gebruiker geeft het aan als het klaar is
totaal = 0
klaar = False
while not klaar: #zolang niet klaar, herhaal dan
print("Geef een getal (of 'X' op te stoppen): ")
invoer = input( ) #vraag gebruiker om invoer
if invoer == 'X':
klaar = True
else:
ingevoerde_getal = int( invoer ) #zet de invoer om in een getal
print("Je hebt ingevoerd", ingevoerde_getal )
totaal += ingevoerde_getal #tel ingevoerde getal op bij het totaal
print( "Totaal is", totaal ) #druk aan einde het totaal af
Opdracht 7.10 Pincode invoeren
PINCODE = "1234"
pogingen = 0
mag_nog_raden = True
while mag_nog_raden: #herhaal zolang niet juist ingevoerd is
print( "Voer pincode in: " )
invoer = input() #vraag om de pincode
print( "Je hebt ingevoerd:", invoer)
if invoer == PINCODE:
print("Toegang verleend")
mag_nog_raden = False
else:
pogingen += 1
if pogingen < 3:
print("Fout... probeer het opnieuw")
else: # te veel foute pogingen
print(pogingen, "foutieve pogingen gedaan. Toegang geweigerd.")
mag_nog_raden = False
Opdracht 7.11 Wachtwoord met bijhouden van aantal foute pogingen
WACHTWOORD = "GEHEIM"
goed_geraden = False #om te beginnen staat de vlag op False
aantal_foute_pogingen = 0 #om te beginnen zijn nog geen pogingen gedaan
while not goed_geraden: #herhaal zolang nog niet geraden
print( "Voer wachtwoord in:" )
ingevoerde_wachtwoord= input( ) #vraag gebruiker om pincode
print( "Je hebt ingevoerd:", ingevoerde_wachtwoord)
if ingevoerde_wachtwoord == WACHTWOORD: #er is goed geraden
print("Wachtwoord is juist!")
goed_geraden = True #de vlag wordt op True gezet, hierna zal de while-loop niet nog een keer uitgevoerd gaan worden
else: #fout geraden
print("Ingevoerde wachtwoord is, fout... probeer het nog een keer") #vlag blijft op niet geraden, de loop wordt weer een keer herhaalt
aantal_foute_pogingen += 1
print("Aantal foute pogingen:", aantal_foute_pogingen)
H7 - Afsluitende opdrachten : UITWERKINGEN
Afsluitende opdracht 7.1 Rekenspel
import random
spel_afgelopen = False #om te beginnen is spel nog niet afgelopen
while not spel_afgelopen: #zolang spel nog niet is afgelopen, herhaal dan:
#bepaal willekeurige getallen
getal1 = random.randint(0,10)
getal2 = random.randint(0,10)
#vraag gebruiker om antwoord en sla op als int
print("Hoeveel is " + str(getal1) + " + " + str(getal2) + "?")
invoer = input()
antwoord = int( invoer )
#controleer of antwoord correct is
if antwoord == (getal1 + getal2):
print("Goed zo! Je krijgt nog een som.")
else: #antwoord fout, spel afgelopen
print("Jammer, je bent af.")
print("Het antwoord was: "+ str(getal1) + " + " + str(getal2) + " = " + str(getal1 + getal2) )
spel_afgelopen = True #pas vlag aan, spel is nu afgelopen
print("Bedankt voor het spelen")
Afsluitende opdracht 7.2 Rekenspel met punten
import random
punten = 100
spel_afgelopen = False #om te beginnen is spel nog niet afgelopen
while not spel_afgelopen: #zolang spel nog niet is afgelopen, herhaal dan:
#bepaal willekeurige getallen
getal1 = random.randint(0,10)
getal2 = random.randint(0,10)
#vraag gebruiker om antwoord en sla op als int
print("Hoeveel is " + str(getal1) + " * " + str(getal2) + "?")
print("Wat is het product van" + str(getal1) + "en" + str(getal2) "?")
invoer = input()
antwoord = int( invoer )
#controleer of antwoord correct is
if antwoord == (getal1 * getal2):
punten += 10 #antwoord goed, 10 punten er bij
print("Goed zo! Je score is nu" + str(punten) +".")
print("Je krijgt nog een opgave.")
else: #antwoord fout, spel afgelopen
punten -= 10 #antwoord goed, 10 punten eraf
print("Jammer, fout")
print("Je score is nu" + str(punten) +".")
print("Het goede antwoord was: "+ str(getal1) + " * " + str(getal2) + " = " + str(getal1 + getal2) )
if punten == 0:
spel_afgelopen = True #pas vlag aan, spel is nu afgelopen
print("Jammer! Je bent nu af.")
print("Bedankt voor het spelen." )
Extra uitdaging:
import random
spel_afgelopen = False
punten = 100
#vraag naar type bewerking
bewerking = input("Geef aan welk type opdracht je wil maken door de juiste operator in te typen. Kies uit +, -, * of /: ")
while not spel_afgelopen:
getal1 = random.randint(0,10)
getal2 = random.randint(0,10)
if bewerking == "+":
print("Wat is de som van", getal1, "en", getal2)
antwoord = int(input("Voer je antwoord in: "))
if antwoord == getal1 + getal2:
punten += 10
print("Goed zo! Je score is nu" + str(punten) +".")
print("Je krijgt nog een opgave.")
else:
punten -= 10
print("Helaas! Fout! Je score is nu" + str(punten) +".")
print("Het goede antwoord was", getal1 + getal2, ".")
elif bewerking == "-":
print("Wat is het verschil van", getal1, "en", getal2)
antwoord = int(input("Voer je antwoord in: "))
if antwoord == getal1 - getal2:
punten += 10
print("Goed zo! Je score is nu" + str(punten) + ".")
print("Je krijgt nog een opgave.")
else:
punten -= 10
print("Helaas! Fout! Je score is nu" + str(punten) +".")
print("Het goede antwoord was", getal1 - getal2, ".")
elif bewerking == "*":
print("Wat is het product van", getal1, "en", getal2)
antwoord = int(input("Voer je antwoord in: "))
if antwoord == getal1 * getal2:
punten += 10
print("Goed zo! Je score is nu" + str(punten) + ".")
print("Je krijgt nog een opgave.")
else:
punten -= 10
print("Helaas! Fout! Je score is nu" + str(punten) +".")
print("Het goede antwoord was", getal1 * getal2, ".")
elif bewerking == "/":
if getal2 == 0: # delen door nul is niet gedefinieerd
getal2 = random.randint(1,10)
print("Wat is het quotient van", getal1, "en", getal2, "\nDenk aan de decimale punt!")
antwoord = round(float(input("Voer je antwoord in: ")),2)
if antwoord == round(getal1 / getal2,2):
punten += 10
print("Goed zo! Je score is nu" + str(punten) + ".")
print("Je krijgt nog een opgave.")
else:
punten -= 10
print("Helaas! Fout! Je score is nu" + str(punten) +".")
print("Het goede antwoord was", round(getal1 / getal2,2), ".")
else:
print("Dat is een onbekende bewerking.")
punten = 0
if punten == 0:
spel_afgelopen = True
print("Jammer! Je bent nu af.")
print("Bedankt voor het spelen.")
Afsluitende opdracht 7.3 Krimpende spirograaf
import turtle
### FUNCTIEDEFINITIE
#tekent een vierkant door 4 keer vooruit de gegeven lengte vooruit te lopen en 90 graden te draaien.
def tekenVierkant( lengte ):
turtle.forward( lengte )
turtle.right( 90 )
turtle.forward( lengte )
turtle.right( 90 )
turtle.forward( lengte )
turtle.right( 90 )
turtle.forward( lengte )
turtle.right( 90 )
def vraagGebruikerOmLengte():
print("Geef een getal tussen de 50 en 400:")
invoer = input()
lengte = int (invoer)
print( "Het eerste vierkant wordt", lengte, "groot.")
return lengte
### HOOFDPROGRAMMA
turtle.pendown()
lengte = vraagGebruikerOmLengte()
while lengte > 10:
tekenVierkant( lengte )
turtle.right(15)
lengte -= 10
turtle.done()
Afsluitende opdracht 7.4 Som berekenen
totaal = 0
klaar = False
while not klaar: #zolang nier klaar, herhaal dan
print("Geef een getal (of 'X' op te stoppen): ")
invoer = input( ) #vraag gebruiker om invoer
if invoer == 'X':
klaar = True
else:
aantal_getallen_ingevoerd += 1
ingevoerde_getal = int( invoer ) #zet de invoer om in een getal
print("Je hebt ingevoerd", ingevoerde_getal )
totaal += ingevoerde_getal #tel ingevoerde getal op bij het totaal
print( "Totaal is", totaal ) #druk aan einde het totaal af
Afsluitende opdracht 7.5 Gemiddelde berekenen
totaal = 0
aantal_getallen_ingevoerd = 0
klaar = False
while not klaar: #zolang nier klaar, herhaal dan
print("Geef een getal (of 'X' op te stoppen): ")
invoer = input( ) #vraag gebruiker om invoer
if invoer == 'X':
klaar = True
else:
aantal_getallen_ingevoerd += 1
ingevoerde_getal = int( invoer ) #zet de invoer om in een getal
print("Je hebt ingevoerd", ingevoerde_getal )
totaal += ingevoerde_getal #tel ingevoerde getal op bij het totaal
print( "Totaal is", totaal ) #druk aan einde het totaal af
gemiddelde = totaal/aantal_getallen_ingevoerd
print( "Het gemiddelde is", gemiddelde)