How would you do this?
vduncan80 at gmail.com
vduncan80 at gmail.com
Fri Feb 15 20:17:57 CET 2013
On Thursday, February 14, 2013 5:19:51 PM UTC-7, eli m wrote:
> On Thursday, February 14, 2013 4:09:37 PM UTC-8, Oscar Benjamin wrote:
>
> > On 14 February 2013 23:34, eli m <techgeek201 at gmail.com> wrote:
>
> >
>
> > > I want to make a guess the number game (Which i have), but i want to make the computer play the game against itself. How would i do this?
>
> >
>
> >
>
> >
>
> > Your question would make more sense if you would show your program and
>
> >
>
> > also explain how you would like the output to look when the computer
>
> >
>
> > played itself.
>
> >
>
> >
>
> >
>
> >
>
> >
>
> > Oscar
>
> This is my code:
>
>
>
> #Guess the number game
>
> import random
>
> run = 0
>
> while run == 0:
>
> print ("I am thinking of a number between 1 and 100")
>
> num = random.randint(1, 100)
>
> num = int(num)
>
> guesses = 0
>
> guessestaken = 0
>
> while guesses == 0:
>
> try:
>
> guess = raw_input("Your guess:")
>
> guess = int(guess)
>
> guessestaken = (guessestaken) + 1
>
> guessestaken = int(guessestaken)
>
> if guess == (num):
>
> print 'Correct! It took you', int(guessestaken), 'guesses!'
>
> playagain = raw_input("Do you want to play again?")
>
> if playagain == "yes":
>
> guesses = 1
>
> if playagain == "no":
>
> run = 1
>
> if guess > num:
>
> print ("My number is lower")
>
> if guess < num:
>
> print ("My number is higher")
>
> except TypeError, err:
>
> print ("Not a valid number")
>
>
>
> I would like it to show the computer guessing the numbers.
Hello. I think you code is Python 2.7. My solution uses Python 3 but I can help you convert it if the solution is what you are looking for. My approach as to create a class that tries to guess the right number. This code also eliminates raw_input. I didn't know how important having it respond via raw_input is to you. Code follows:
import random
import sys
class Guesser():
def __init__(self):
self.low = 1
self.high = 100
def getRand(self,x,y):
num = random.randint(x,y)
return num
def guess(self,guess,boundary):
if boundary == ">":
self.low = guess
elif boundary == "<":
self.high = guess
else:
self.low = 1
self.high = 100
return self.getRand(self.low,self.high)
def playagain(self):
choice = ['Y','N']
return random.choice(choice)
run = 0
while run == 0:
guess=1
guesses=0
guessestaken = 0
comp = Guesser()
num = comp.getRand(1,100)
result = ""
print ("I am thinking of a number between 1 and 100")
while guesses == 0:
guessestaken += 1
try:
guess = comp.guess(guess,result) # replaces input
except:
print("Unexpected error:", sys.exc_info()[0])
raise
print("Your guess:", guess)
if guess == num:
print('Correct! It took you', guessestaken, 'guesses!')
guesses = 1
elif guess > num:
print("My number is lower")
result = "<"
else:
print("My number is higher")
result = ">"
print("Do you want to play again?")
playagain = comp.playagain() # replaces input
print(playagain)
if playagain == "N":
run = 1
Please let me know if you have questions or would like to discuss this solution further.
Cheers!
vduncan
More information about the Python-list
mailing list