Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 22nd, 2010 | Syntax: Python | Size: 3.41 KB | Hits: 60 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. import sys
  2. import random as r
  3.  
  4. class GuessNumber:
  5.     def __init__(self, minimum = 1, maximum = 100, \
  6.                 lowerphrase = "Lower.", higherphrase = "Higher."):
  7.         r.seed()
  8.         self.number = r.randint(minimum, maximum)
  9.         self.lowerphrase = lowerphrase
  10.         self.higherphrase = higherphrase
  11.  
  12.     def play(self):
  13.         while True:
  14.             guess = self.__parseguess(str(raw_input("Take a guess: ")))
  15.             if guess == -1:
  16.                 print "You must guess a number."
  17.                 continue
  18.             else:
  19.                 if guess > self.number:
  20.                     print self.lowerphrase
  21.                     continue
  22.                 elif guess < self.number:
  23.                     print self.higherphrase
  24.                     continue
  25.                 else:
  26.                     print "Congratulations! The number was", self.number
  27.                     break
  28.    
  29.     def __parseguess(self, guess):
  30.         if guess.isdigit():
  31.             return int(guess)
  32.        
  33.         ones =    {
  34.                     "one"       : 1,
  35.                     "two"       : 2,
  36.                     "three"     : 3,
  37.                     "four"      : 4,
  38.                     "five"      : 5,
  39.                     "six"       : 6,
  40.                     "seven"     : 7,
  41.                     "eight"     : 8,
  42.                     "nine"      : 9,
  43.         }
  44.        
  45.         teens = {
  46.                     "ten"       : 10,
  47.                     "eleven"    : 11,
  48.                     "twelve"    : 12,
  49.                     "thirteen"  : 13,
  50.                     "fourteen"  : 14,
  51.                     "fifteen"   : 15,
  52.                     "sixteen"   : 16,
  53.                     "seventeen" : 17,
  54.                     "eighteen"  : 18,
  55.                     "nineteen"  : 19,
  56.         }
  57.        
  58.         decades = {
  59.                     "twenty"    : 20,
  60.                     "thirty"    : 30,
  61.                     "forty"     : 40,
  62.                     "fifty"     : 50,
  63.                     "sixty"     : 60,
  64.                     "seventy"   : 70,
  65.                     "eighty"    : 80,
  66.                     "ninety"    : 90,
  67.         }
  68.                        
  69.         numbers = {}
  70.         numbers.update(ones)
  71.         numbers.update(teens)
  72.         numbers.update(decades)
  73.        
  74.         guesslist = guess.split()
  75.        
  76.         if len(guesslist) not in [1, 2] or guesslist[0].lower() not in numbers:
  77.             return -1
  78.            
  79.         if len(guesslist) == 1:
  80.             if guesslist[0].lower() not in numbers:
  81.                 return -1
  82.             else:
  83.                 return int(numbers[guesslist[0]])
  84.        
  85.         elif len(guesslist) == 2:
  86.             if guesslist[1].lower() in decades or teens:
  87.                 return -1
  88.             else:
  89.                 return int(numbers[guesslist[0]]) + int(numbers[guesslist[1]])
  90.    
  91. if __name__ == "__main__":
  92.     try:
  93.         inf = open(sys.argv[1], "r")
  94.         lphrase = inf.readline().strip()
  95.         hphrase = inf.readline().strip()
  96.     except (IOError, IndexError, NameError):
  97.         lphrase = "Lower."
  98.         hphrase = "Higher."
  99.    
  100.     try:    
  101.         inf.close()
  102.     except NameError:
  103.         pass
  104.  
  105.     g = GuessNumber(lowerphrase=lphrase, higherphrase=hphrase)
  106.    
  107.     try:
  108.         g.play()
  109.     except KeyboardInterrupt:
  110.         print "\nThe number was %s." % g.number
  111.         print "Better luck next time!"