1

我最近开始编程,我从 python 开始。我的问题是:如何在另一个函数中使用函数的结果?

def eklid(p, a, b,):
    x = [1, 0]
    y = [0, 1]
    r = [a, b]
    q = [0]
    n = 0
    while r[n+1] != 0:
        q.append(r[n] // r[n+1])
        r.append(r[n] % r[n+1])
        x.append(x[n] - x[n+1] * q[n+1])
        y.append(y[n] - y[n+1] * q[n+1])

        if p == 0:
            print(r[n], "=", r[n+1], "*", q[n+1], "+", r[n+2])
        elif p == 1:    # extended print
            print(r[n+2], "\t", x[n+2], "\t", y[n+2], "\t", r[n+2], "=", a, "*", x[n+2], "+", b, "*", y[n+2])
        elif p == -1:
            k =1
        else:
            print("wrong input")
        n += 1
    return x, y, r, q, n,

我有这个功能eklid(),我想在这个功能中使用xr

def cong_solv(x, r, b,):
    result = x/r
    int_result = int(result)
    return int_result

我怎样才能做到这一点?

4

4 回答 4

2
# Here, a=x, b=y, c=r, d=q, e=n
a, b, c, d, e = eklid(h, i, k)

# Assuming based on your function definitions you want the
# same value as the third argument
final_result = cong_solv(a, c, k)

您从中获取返回值eklid并将它们保存到变量中。然后使用这些变量调用下一个函数。

当然,在真实的代码中,你应该比我在这个例子中更好地命名你的变量。我故意没有将变量称为与函数内部相同的名称,以证明您不必这样做。

于 2013-10-08T19:53:09.310 回答
2

一种方法是从 cong_solv() 函数内部调用 eklid() 函数。像这样的东西应该工作:

def cong_solv(x, r, b):
   p = "foo"
   b = "bar"
   x, y, r, q, n = eklid(p, a, b)

   result = x/r 
   int_result = int(result) 
   return int_result
于 2013-10-08T19:53:59.253 回答
0

在python中,当您返回多个变量时,它会返回一个元组。您可以通过其索引 (returned_value[0], returned_value[1]) 检索值,或者像 Mike Driscoll 所说的那样解包元组 (a, b, c, d = eklid(h, i, k))。

由于我得到了两个反对票,我将给你更好的(我希望)解释:每次你返回多个值时,它都会返回一个tuple

def my_function():
   a = 10
   b = 20
   return a, b

print type(my_function()) # <type 'tuple'>

但是如果你只返回一个值:

def my_function():
    a = 10
    return a

print type(my_function()) # <type 'int'>

所以如果你想使用你的价值,你可以:

像这样解包元组值

a, b = my_function()

这样,您可以按照在 my_function 中返回的顺序获取返回值。

重写你的代码,你可以简单地做:

a, b, c = eklid(10, 20, 30) # it will return a tuple

并调用您的其他功能:

cong_solv(a, b, 20)

老实说,我会返回一个dict。使用 dict 你可以是明确的,因为你的值有键名。

在您的 eklid 返回函数中:

return d # d = {"what_x_means": x,
         #      "what_y_means": y,
         #      "what_r_means": r,
         #      "what_q_means": q, 
         #      "what_n_means": n}

并检索其密钥:

d["what_x_means"]
d["what_r_means"]
于 2013-10-08T19:59:54.750 回答
-1

类似于如何在 Python 中返回多个值?

  1. 作为元组 (x,y,r....) 或数组返回并分别分配给元组/数组。
  2. 或者将它们分配给类变量并访问它们
于 2013-10-08T19:58:27.200 回答