Need help improving number guessing game

James Stroud jstroud at mbi.ucla.edu
Sat Dec 13 05:16:45 EST 2008


James Stroud wrote:
> 1. Refactor. You should look at your code and see where you repeat the 
> same or similar patterns, see where they differ, make functions, and 
> make the differences parameters to the function call:
> 
> def guess(player, p1score, p2score):
>   guess1 = int(input("\n>> "))
>   if guess1 > 100:
>     print("ONLY NUMBERS FROM 1 TO 99")
>   elif guess1 > target:
>     print("TOO HIGH")
>   elif guess1 == target:
>     print("GOOD JOB, PLAYER %s! THE SCORE IS:" % player)
>     print("P1: %s --- P2: %s"  % (p1score, p2score)))
>     print("PLAY AGAIN?")
>     #Set up the game again
>     play = int(input("0 TO END: "))
>     if play == 0:
>       print("GOOD BYE. PLAY AGAIN SOON!")
>       quit()
>     else:
>       target = random.randint(1, 99)
>   else:
>     print("TOO LOW")

I realized this has a bug. The target is locked in the scope of the 
function. I wouldn't use global, though:

def guess(player, p1score, p2score):
   target = None
   guess1 = int(input("\n>> "))
   if guess1 > 100:
     print("ONLY NUMBERS FROM 1 TO 99")
   elif guess1 > target:
     print("TOO HIGH")
   elif guess1 == target:
     print("GOOD JOB, PLAYER %s! THE SCORE IS:" % player)
     print("P1: %s --- P2: %s"  % (p1score, p2score)))
     print("PLAY AGAIN?")
     #Set up the game again
     play = int(input("0 TO END: "))
     if play == 0:
       print("GOOD BYE. PLAY AGAIN SOON!")
       quit()
     else:
       target = random.randint(1, 99)
   else:
     print("TOO LOW")

Use it like this:

new_target = gues(player, p1score, p2score)
if new_target is not None:
   target = new_target

I officially declare that I can't guarantee no more bugs in my previous 
post. I just fixed this one because my conscience was bothering me.

James



-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com



More information about the Python-list mailing list