2

关键是要猜测从整数区间中选择的随机数,并在固定的尝试次数内进行。

main函数询问区间的上限和用户可以给出的猜测次数。然后核心函数应该返回猜测的值,所以当数字正确时,函数应该立即终止。

我在调试时放了一些打印语句,我明白该y值没有从函数返回到while语句。core

# -*- coding: utf-8 -*-
def main():
    from random import choice
    p = input("choose upper limit: ")
    t = input("how many attempts: ")
    pool = range(p+1)
    x = choice(pool)
    i = 1
    while ((x != y) and (i < t)):
        core(x,y)
        i += 1

def core(x,y):
    y = input("choose a number: ")
    if y == x:
        print("You gussed the right number!")
        return y
    elif y > x:
        print("The number is lower, try again")
        return y
    else:
        print("The number is higher, try again")
        return y
4

2 回答 2

0

您想将返回值core分配回局部y变量,它不是通过引用传递的:

y = core(x)

您还需要y在进入循环之前进行设置。函数中的局部变量在其他函数中不可用。

因此,您根本不需要传递ycore(x)

def core(x):
    y = input("choose a number: ")
    if y == x:
        print("You gussed the right number!")
        return y
    elif y > x:
        print("The number is lower, try again")
        return y
    else:
        print("The number is higher, try again")
        return y

循环变为:

y = None
while (x != y) and (i < t):
    y = core(x)
    i += 1

你在函数中设置什么并不重要,只要在用户猜测之前它永远不会等于。ymain()x

于 2013-02-11T14:59:23.253 回答
0
y = -1
while ((x != y) and (i < t)):
    y = core(x,y)
    i += 1

您在循环之前“初始化” y 。在循环内部,您将 y 设置为 core() 函数的结果。

于 2013-02-11T15:00:10.640 回答