In de vorige les hebben we het programma hoger - lager besproken.


De eerste oplossing zag er zo uit:

import random
print ("Hallo, zin in een spelletje hoger - lager?")
ikdenkaan = random.randrange(1,100)
rarara = 0; aantal = 0
print ("Ik heb zojuist aan een getal tussen 1 en 100 gedacht")
rarara = int(input('Raad eens aan welk getal ik denk?'))
aantal = aantal + 1
while rarara != ikdenkaan:
    if rarara < ikdenkaan:
        print("Sorry, te klein")
    if rarara > ikdenkaan:
        print("Sorry, te groot")
    rarara = int(input('Raad eens aan welk getal ik denk?'))
    aantal = aantal + 1
print("Goed geraden!")
print ("Geraden in ", aantal, "keer")

 

Nu waren ook een paar oefeningen die niet verder zijn besproken:

Oefening 1: Kun je oplossing 1 ook zo aanpassen dat er maar één IF ... ELSE combinatie wordt gebruikt?

De oplossing is hier tamelijk simpel: we vervangen de 2de IF instructie door de else statement:

import random
print ("Hallo, zin in een spelletje hoger - lager?")
ikdenkaan = random.randrange(1,100)
rarara = 0; aantal = 0
print ("Ik heb zojuist aan een getal tussen 1 en 100 gedacht")
rarara = int(input('Raad eens aan welk getal ik denk?'))
aantal = aantal + 1
while rarara != ikdenkaan:
    if rarara < ikdenkaan:
        print("Sorry, te klein")
    else:
        print("Sorry, te groot")
    rarara = int(input('Raad eens aan welk getal ik denk?'))
    aantal = aantal + 1
print("Goed geraden!")
print ("Geraden in ", aantal, "keer")

De while loop stopt automatisch als het getal in variable rarara gelijk is aan dat van ikdenkaan.
Dus als we in de while loop zitten, is het getal of te laag, of te hoog. Dus kunnen we daar mooi gebruik maken van de IF ... ELSE combinatie.

Oefening 2: Kun je het programma uitbreiden dat ook naar je naam wordt gevraagd en dat dan telkens je naam wordt gebruikt?

Deze heb ik als volgt opgelost:

 import random
print ("Hallo, zin in een spelletje hoger - lager?")
# We zouden graag eerst je naam weten
jenaam = input("Wat is je naam? ")
ikdenkaan = random.randrange(1,100)
rarara = 0; aantal = 0
# Eerst eens naar een getal vragen voor de while loop wordt opgestart
print ("Ik heb zojuist aan een getal tussen 1 en 100 gedacht")
rarara = int(input('Raad eens aan welk getal ik denk?'))
aantal = aantal + 1
while rarara != ikdenkaan:
    if rarara < ikdenkaan:
        print("Sorry", jenaam, ", te klein")
    else:
        print("Sorry", jenaam, ", te groot")
    rarara = int(input('Raad eens aan welk getal ik denk?'))
    aantal = aantal + 1
print("Goed geraden", jenaam, "!")
print ("Geraden in ", aantal, "keer")

Versta je wat ik hier heb gedaan? Je naam wordt bewaard in variable jenaam. Ik heb ook wat commentaar regels toegevoegd.
Als je aan het begin het # teken toevoegt, dan zal python daar niet mee doen. Het is een goede gewoonte om in je programma's veel commentaar regels toe te voegen.
Het zorgt ervoor dat je moeilijke stukken in een programma beter begrijpt, als je daar wat uitleg bij zet.

Oefening 3: Zou je het programma kunnen uitbreiden dat je maar 10 pogingen hebt om het juiste cijfer te raden?

 Dit is een mogelijke oplossing:

import random
""" Dit is het spelletje Hoger - Lager
Je hebt 10 pogingen om het juiste getal te raden
Ik heb hier nog een regeltje commentaar toegevoegd"""

print ("Hallo, zin in een spelletje hoger - lager?")
# We zouden graag eerst je naam weten
jenaam = input("Wat is je naam? ")
ikdenkaan = random.randrange(1,100)
rarara = 0; aantal = 0; max_pogingen = 10
# Eerst eens naar een getal vragen voor de while loop wordt opgestart
print ("Ik heb zojuist aan een getal tussen 1 en 100 gedacht")
rarara = int(input('Raad eens aan welk getal ik denk?'))
aantal = aantal + 1
while rarara != ikdenkaan:
    if rarara < ikdenkaan:
        print("Sorry", jenaam, ", te klein")
    else:
        print("Sorry", jenaam, ", te groot")
    if max_pogingen == aantal:
        break
    rarara = int(input('Raad eens aan welk getal ik denk?'))
    aantal = aantal + 1
if ( rarara == ikdenkaan):
    print("Goed geraden", jenaam, "!")
    print ("Geraden in ", aantal, "keer")
else:
    print("Oei, je hebt ", max_pogingen, "gedaan en nog niet het juiste getal geraden")
    print("Het getal waar ik aan dacht was", ikdenkaan)
    
Als we meerdere regels commentaar willen geven, dan kunnen we dat doen door te beginnen met drie dubbele aanhalingstekens: """
We kunnen commentaar plaatsen tot we nogmaal die drie dubbele aanhalingstekens gebruiken.
Met een extra IF instructie testen we of we aan het maximum aantal pogingen zitten. Als dat zo is springen we uit de while loop met de break instructie.
Als we uit de while loop zijn, weten we nog niet of we het juiste getal hebben geraden. Dus, daar ik ook een extra IF ... ELSE nodig.

Als je aan het programmeren bent vanuit de IDLE, kun je met F1 ook de documentatie over Python opvragen:

De documentatie is wel in het Engels.

Wat hebben we geleerd?

  • Met het # teken kunnen we een regeltje commentaar toevoegen waar Python niets mee doet.
  • Met """ blablabla """ kunnen we meerdere regels commentaar toevoegen.
  • Met de F1 toets krijgen we extra hulp.
  • Met de break geraken we zo uit een while lus.