Raad mijn getal

Ik denk dat zelf programma’s schrijven de beste manier is om een computertaal te leren, zo ook bij Python. Deze keer een spelletje. De computer moet een getal raden dat je zelf gekozen hebt. Het bestaat uit een lus die de functie numguess aanroept. In numguess wordt het feitelijke spel gespeeld.

Kopieer de onderstaande code naar je klembord, plak het in een tekstbewerker, sla het op als “platte tekst”, en voer het uit met IDLE of in de command line interpreter van je besturingssysteem. Als je IDLE gebruikt, kun je het ook rechtstreeks in een nieuw IDLE editor venster plakken en uitvoeren via Run. Sla het programma op als numguess.py (of iets dergelijks).

Het programma werkt met Engelstalige tekst.

def numguess(lowest=0, highest=1024):
    """Guess a number between lowest and highest.

    Let the user say if it's higher, lower or correct."""
    answer = None
    guess = (lowest + highest) / 2
    tries = 0
    while True:
        if answer:
            if answer == 'c':
                break
            elif answer == 'h':
                lowest = guess + 1
                if highest - guess == 1:
                    guess = highest
                else:
                    guess = (guess + highest) / 2
            elif answer == 'l':
                highest = guess - 1
                guess = (lowest + guess) / 2
        tries = tries + 1
        print "A number between %d and %d. I think it's %d" \
              % ( lowest, highest, guess ),
        if highest == lowest:
            print '(the only possible answer)'
            break
        else:
            print
        while True:
            answer = raw_input( 'Higher, Lower, or Correct (H, L, C) ? ' )
            answer = answer.lower().strip()
            if len(answer) > 0 and answer[0] in "hlc":
                break
            print "Please use an H, L, or C!"
    if tries == 1:
        print "I guessed the number %d in a single try!" % guess
    else:
        print "I guessed the number %d in %d tries!" % (guess, tries)

if __name__ == "__main__":
    print "Number guessing game. The computer tries to guess your number."
    print
    while True:
        numguess(1,99)
        print
        while True:
            yn = raw_input( "Another game? " )
            yn = yn.lower().strip()
            if yn in ( 'y', 'ye', 'yes' ):
                yn = 'y'
                break
            elif yn in ( 'n', 'no', 'nop', 'nope' ):
                yn = 'n'
                break
            else:
                print "Please, only use 'yes' or 'no'!"
        if yn == 'n':
            break
    print
    print "Game over"

Nog geen reacties

Leave a reply