Untitled
By: a guest | Mar 22nd, 2010 | Syntax:
Python | Size: 3.41 KB | Hits: 60 | Expires: Never
import sys
import random as r
class GuessNumber:
def __init__(self, minimum = 1, maximum = 100, \
lowerphrase = "Lower.", higherphrase = "Higher."):
r.seed()
self.number = r.randint(minimum, maximum)
self.lowerphrase = lowerphrase
self.higherphrase = higherphrase
def play(self):
while True:
guess = self.__parseguess(str(raw_input("Take a guess: ")))
if guess == -1:
print "You must guess a number."
continue
else:
if guess > self.number:
print self.lowerphrase
continue
elif guess < self.number:
print self.higherphrase
continue
else:
print "Congratulations! The number was", self.number
break
def __parseguess(self, guess):
if guess.isdigit():
return int(guess)
ones = {
"one" : 1,
"two" : 2,
"three" : 3,
"four" : 4,
"five" : 5,
"six" : 6,
"seven" : 7,
"eight" : 8,
"nine" : 9,
}
teens = {
"ten" : 10,
"eleven" : 11,
"twelve" : 12,
"thirteen" : 13,
"fourteen" : 14,
"fifteen" : 15,
"sixteen" : 16,
"seventeen" : 17,
"eighteen" : 18,
"nineteen" : 19,
}
decades = {
"twenty" : 20,
"thirty" : 30,
"forty" : 40,
"fifty" : 50,
"sixty" : 60,
"seventy" : 70,
"eighty" : 80,
"ninety" : 90,
}
numbers = {}
numbers.update(ones)
numbers.update(teens)
numbers.update(decades)
guesslist = guess.split()
if len(guesslist) not in [1, 2] or guesslist[0].lower() not in numbers:
return -1
if len(guesslist) == 1:
if guesslist[0].lower() not in numbers:
return -1
else:
return int(numbers[guesslist[0]])
elif len(guesslist) == 2:
if guesslist[1].lower() in decades or teens:
return -1
else:
return int(numbers[guesslist[0]]) + int(numbers[guesslist[1]])
if __name__ == "__main__":
try:
inf = open(sys.argv[1], "r")
lphrase = inf.readline().strip()
hphrase = inf.readline().strip()
except (IOError, IndexError, NameError):
lphrase = "Lower."
hphrase = "Higher."
try:
inf.close()
except NameError:
pass
g = GuessNumber(lowerphrase=lphrase, higherphrase=hphrase)
try:
g.play()
except KeyboardInterrupt:
print "\nThe number was %s." % g.number
print "Better luck next time!"