我编写了下面的Python代码,它应该“猜测”1到100之间的数字,你只需告诉它你想到的数字是高还是低。但是出于某些原因,当我尝试播放它时,当我告诉它我的数字更高后告诉它更低或反之亦然时它总是卡住:
import random
import time
import math
correct = 0
goon = 'yes'
biggest = 100
smallest = 1
tries = 10
print 'Hi!'
time.sleep(0.5)
print 'I´m going to try and guess your number'
time.sleep(0.5)
print 'Just tell me if your number is bigger or smaller than what I guessed'
time.sleep(0.5)
print 'And of course you have to tell me when I´m right, ok?'
time.sleep(0.5)
print 'Type "b" if your number is smaller than what I guessed and type "s" if it´s bigger. When I´m right, type "r".'
time.sleep(0.5)
print 'Oh by the way, your number should be between 1 and 100.'
if goon == 'no' or goon == 'No' or goon == 'n':
print 'Ok, see you soon!'
else:
while goon == 'yes' or goon == 'Yes' or goon == 'y':
guess = random.randint(1,100)
print guess
answer = raw_input()
while correct == 0:
if answer == 'r':
correct = 1
endhooray = random.randint(1, 3)
if endhooray == 1:
print 'Yay, I got it!'
elif endhooray == 2:
print 'Finally!'
elif endhooray == 3:
print 'See, I´m good at this!'
elif answer == 'b':
smallest = guess
difference = 100 - guess
add = random.randint(1, difference)
guess = guess + add
if guess < biggest:
print guess
answer = raw_input()
elif guess > biggest:
while tries == 10:
add = random.randint(1, difference)
guess = guess + add
if guess < biggest:
print guess
answer = raw_input()
tries == 1000000
elif answer == 's':
biggest = guess
difference = guess - 100
difference = difference * -1
subtract = random.randint(1, difference)
guess = guess - subtract
if guess > smallest:
print guess
answer = raw_input()
elif guess < smallest:
while tries == 10:
subtract = random.randint(1, difference)
guess = guess - subtract
if guess > smallest:
print guess
answer = raw_input()
tries = 100000
else:
print 'Oops, I don´t know what that means'
break
答案 0 :(得分:0)
我冒昧地简化了你的代码。这应该做的工作:
import random
import time
# your intro here
correct = False
min_, max_ = 0, 100
while not correct:
guess = random.randint(min_, max_)
answer = raw_input("Is your number %d? (b/s/r): " % guess)
if answer == "b":
min_ = guess+1
print "Ok, I'll aim higher!"
elif answer == "s":
max_ = guess
print "Ok, I'll aim lower!"
elif answer == "r":
hooray = random.choice(["Yay, I got it!", "Finally!", "See, I'm good at this!"])
print hooray
correct = True
else:
print "Oops, I don't know what that means!"