【发布时间】:2016-07-17 19:58:33
【问题描述】:
我正在上我的第一堂编程课,并在 StackOverFlow 上提出我的第一个问题。我目前正在尝试编写一个猜谜游戏程序,如果他们的猜测在用户猜测的 10 高或低范围内,我必须提醒用户。我目前正在阅读Python 入门一书的第 5 章。
教授是这样写的: 如果玩家的猜测低于生成的数字,则显示消息“太低了!”如果玩家的猜测与生成的数字相差 10 分以内但低于生成的数字,则给出消息“正在变暖但仍然低!”
我确信我已经解决了问题中的所有其他问题,但无法弄清楚如何执行“热/冷”选项。我已将我编写代码的尝试作为 cmets。
谢谢!
import random
def main ():
guess_game ()
try_again()
def guess_game():
number = random.randint (1, 1000)
guess_taken = 0
while guess_taken < 100000000:
print ('I am thinking of a number between 1 and 1000.')
guess = float (input('Please enter a guess: '))
guess_taken = guess_taken + 1
if guess < number:
print('Your guess is too low.')
elif guess > number:
print('Your guess is too high.')
#elif (number - guess) > (number - 10):
#print ('Guess Is Hot')
#elif (number - guess) < (number + 10):
#print ('Guess is cold')
else:
guess == number
print('Good job! You guessed my number in', guess_taken,' guesses!')
try_again ()
print ()
#think about doing a range somewhere
def try_again():
again = 'y'
while again == 'y' or again == 'Y':
again = input ('Would you like to play again?')
if again == 'y' or again == 'Y':
guess_game()
else:
exit ()
【问题讨论】:
-
绝对值内置函数
abs()可能对您有所帮助。试试abs(number-guess) -
而不是使用 4 分支 if/elif,您可以查看嵌套的 if 语句 - 例如类似
if guess < number: if guess < (number - 10): print "too low" else: print "warmer but too low" -
您的
guess_game函数中不应有while 循环。您的代码告诉我您走在正确的轨道上,但您对 scope 几乎没有了解。我建议您了解scope,然后尝试重写您的解决方案。 -
@gragas 这没什么用 - while 循环有什么问题,与 [variable] 作用域有什么关系?
-
@TomDalton 实际上,我撤回了我的评论。我误读了你的程序。需要注意的一点是,您可以只使用
while True:,然后使用break,而不是将用户的猜测次数限制在固定(尽管很高)。
标签: python