【问题标题】:Why do I seem to be stuck in a loop?为什么我似乎陷入了循环?
【发布时间】:2017-05-05 03:55:05
【问题描述】:

我尝试编写一个随机数猜谜游戏,主要是因为我想知道 if/else 是否可以像 goto 在我的卡西欧 CFX-9850G 上那样运行。 我还没有清理输入并生成错误消息(例如,将max 设置得太低,输入字母而不是数字,猜测超过最大值等)。我最初的问题是,虽然我的代码没有产生错误,但我似乎无法猜出这个数字,即使我将 max 设置为 3 并尝试 0、1、2、3、4、5。好像我已经创建了一个循环,我不知道在哪里。 这是我的代码:

import random

print "GUESS MY NUMBER"

max=int(raw_input("Guess number between 1 and what?"))

randomnumber = random.randint(1,max)


def make_guess(guess):
  if guess == randomnumber:
    print "Congratulations, you guessed my number!"
  else:
    guess=raw_input("Guess again?")
    make_guess(guess)

guess=int(raw_input("What is your best guess?"))
make_guess(guess)


print "My number was" ,randomnumber

它会生成:

GUESS MY NUMBER Guess number between 1 and what? 3 What is your best guess? 0 Guess again? 1 Guess again? 2 Guess again? 3 Guess again? 4

现在我希望代码循环直到正确猜测,但我预计正确的猜测会触发if 代码。

【问题讨论】:

  • 将你的函数定义移动到代码的顶部或定义一个主函数。不要混淆顶级代码和函数。
  • @VaibhavAggarwal 我不明白。你的意思是把我的def make_guess 移到`print "GUESS MY NUMBER" 上面吗?我试过了,但没有解决我的问题。

标签: python loops random


【解决方案1】:

您忘记在 else 子句中将输入转换为整数。如果您在第一次尝试时猜测它实际上是有效的,因为您在 else 之外进行了转换。

改变else的第一行:

guess=raw_input("Guess again?")

guess=int(raw_input("Guess again?"))

你应该很高兴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多