1

编写一个名为guess_number 的函数,它接收1 个数字参数。它要求用户输入 1 到 10 之间的数字,直到用户猜出参数中的数字。它返回用户猜测的次数。

到目前为止,这是我的代码,但我似乎无法弄清楚我错过了什么。它在输入阶段停止。

def guess_number(x):
    count = 0
    a = input('Guess my number between 1 and 10')
    while a!= x:
        count += 1
    else:
        count += 1
        return count
4

6 回答 6

0

您只要求用户输入一次。

一旦进入 while 循环,用户就不会被提示输入新的猜测。这意味着anever 的值会改变,因此您将永远被困在循环中。

尝试包括一个附加input语句:

def guess_number(x):
    count = 0
    a = input('Guess my number between 1 and 10')
    while a != x:
        count += 1
        a = input('Guess again!')
    else:
        count += 1
        return count
于 2013-04-03T19:27:12.440 回答
0

这是工作代码:

def guess_number(x):
    count = 1
    a = input('Guess my number between 1 and 10')
    while a != x:
        count += 1
        a = input('Guess my number between 1 and 10')
    return count
于 2013-04-03T19:28:35.233 回答
0

您的程序在这一点上卡住了:

while a!= x:
        count += 1

假设 x 为 5,a 为 3。在这种情况下,a!=x 将评估为 True,您将进入循环,并且 count 将递增,但您永远不会离开 while 循环,因为 a 将始终与 x 不同.

这段代码应该这样做:

def guess_number(x):
    count = 1
    while True:
        a = input('Guess my number between 1 and 10')
        if a != x:
            count += 1
        else:
            return count
于 2013-04-03T19:28:36.420 回答
0

除了移动循环input内部之外while,除非您打算x作为字符串传入,否则您还需要在进行比较之前将其转换a为 an 。int

def guess_number(x):
    count = 0
    while int(input('Guess a number.')) != x:
        count += 1
    return count

在风格上,您不应该在提示中烘焙范围(1 到 10),除非该函数实际上限制了可以从中选择的数字范围;x可以是任何东西。我知道这个问题给出了具体的要求,但你应该质疑那些对设计有不好影响的要求。

于 2013-04-03T19:28:54.940 回答
0
def guess_number(x):
    count = 0
    while True:
        a = input('Guess my number between 1 and 10')
        if a!= x:
            count += 1
        else:
            count += 1
            return count
于 2013-04-03T19:29:38.873 回答
0

你有几个问题。首先,您input需要在循环内,否则它只会被询问一次。所以你想要这个:

def guess_number(x):
    count = 0
    while int(raw_input('Guess my number between 1 and 10')) != x:
        count += 1
    else:
        count += 1
        return count

注意(非常重要!)使用 ofint(raw_input(...))而不是 just input!允许您的用户在您的函数中执行任意代码是一个非常糟糕的想法,这就是为什么他们将input' 在 Python 3 中的行为更改为在 Python raw_input2 中所做的那样。

于 2013-04-03T19:32:49.817 回答