Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用函数的返回值_Python_Function_Return_Return Value - Fatal编程技术网

Python 使用函数的返回值

Python 使用函数的返回值,python,function,return,return-value,Python,Function,Return,Return Value,我最近开始编程,从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]

我最近开始编程,从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()
,我想在这个函数中使用它的
x
r

def cong_solv(x, r, b,):
    result = x/r
    int_result = int(result)
    return int_result
我该怎么做

# 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
获取返回值,并将其保存到变量中。然后使用这些变量调用下一个函数


当然,在实际代码中,您应该比我在本例中更好地命名变量。我故意没有调用与函数内相同的变量名称,以证明您不必这样做。

一种方法是从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
近似

  • 以元组(x,y,r…)或数组的形式返回,并分别分配给元组/数组
  • 或者将它们分配给类变量并访问它们

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

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

    这样,您可以按照在my_函数中返回的相同顺序获得返回值

    重写代码时,您只需执行以下操作:

    a, b, c = eklid(10, 20, 30) # it will return a tuple
    
    并调用其他函数:

    cong_solv(a, b, 20)
    
    return d # d = {"what_x_means": x,
             #      "what_y_means": y,
             #      "what_r_means": r,
             #      "what_q_means": q, 
             #      "what_n_means": n}
    
    老实说,我会给你一个回信。使用dict可以显式,因为您的值有键名

    在eklid返回函数中:

    cong_solv(a, b, 20)
    
    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"]
    

    有理由否决投票吗?我是第一个说它返回一个元组的人。警察不知道这样的事。我认为这是他的问题的目的。将你的答案与获得选票的答案进行比较,并注意差异。第一个回答并不意味着你的答案是最好的。顺便说一句,鉴于OP的知识水平,在OP中引入一个新术语而不解释其含义可能并不理想。你的部分答案只是重复了另一个人在答案中所说的话,这并不是特别有用。
    d["what_x_means"]
    d["what_r_means"]