【问题标题】:Python Guessing Game蟒蛇猜谜游戏
【发布时间】:2014-05-12 16:38:01
【问题描述】:

由于某种原因,while 循环永远不会中断,就好像 userGuess 永远不会等于 compAnswer。我让它在一开始就打印答案,所以我们知道。在 Pythonista 上完成。

def guessing_game():
    compAnswer = random.randint(1,10)
    print compAnswer
    guesses = 1
    print "Okay, I\'m thinking of a number between 1 and 10."
    userGuess = raw_input("What number am I thinking of?:  ")
    while userGuess != compAnswer:
        userGuess = raw_input("Nope!  try again:  ")
        guesses += 1
    playAgain = raw_input("You got it!  My number was %s and it took you %d guesses.  Play again?:  " % (compAnswer, guesses))
    if playAgain == "yes":
        guessing_game()
    else:
        print "Okay bye!"

【问题讨论】:

  • 这里使用递归是没有意义的,而不是进入一个新函数,只需使用while循环 where playAgain != "yes"
  • 哦,是的,这东西有一些我正在开发的功能,同时还需要其他东西,但我知道如何完成。

标签: python pythonista


【解决方案1】:

compAnswer是整数,userGuess是字符串;如果您希望它们相等,请使用相同的类型:

while userGuess != str(compAnswer):

【讨论】:

  • 谢谢,解决了。我忘了 raw_input 是特定于字符串的。
【解决方案2】:

compAnswer 是一个整数,而 userGuess 是 raw_input() ,它从命令行接受字符串值,所以它们不是相同的数据类型,所以永远不会是 == 所以它会继续循环。 在第 6 行试试这个:

userGuess = int(raw_input("What number am I thinking of?: "))

但是你接受的输入总是数字类型,如果他们输入非数字字符,这可能会中断,所以更好的是,你可以通过将该行放在 try 块中来验证用户输入,并捕获 ValueError:

try: userGuess = int(raw_input("What number am I thinking of?: ")) except ValueError: print "invalid input"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多