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