H7 - While : UITWERKINGEN

Opdracht 7.1 Voorspellen wat een while doet.


Stroomdiagram voor
functie evenGetallenTot10
  1. Op regel 1 krijgt getal de waarde 0, en op regel 2 wordt dat geprint.
  2. Regel 3: Zolang het getal onder de 10 is wordt het blok onder de while uitgevoerd.
  3. Regels 4 en 5 horen bij het while-blok en worden dus uitgevoerd: het getal wordt met 2 opgehoogd en daarna geprint.
  4. 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)