从while循环中调用的函数返回一个值

时间:2013-02-11 14:55:05

标签: function python-2.7 while-loop

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

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

我在调试时放了一些print语句,我知道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

2 个答案:

答案 0 :(得分:0)

您希望将返回值core 分配回本地y变量,它不会通过引用传递:

y = core(x)

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

因此,您根本不需要将y传递给core(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

你在y函数中设置main()的内容并不重要,只要它永远不会等于{{1在用户做出猜测之前。

答案 1 :(得分:0)

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

你&#34;初始化&#34; y在循环之前。在循环内部,您将y设置为等于core()函数的结果。