from __future__ import division
import math
def main():
the_discriminant = discrim(1,0,-4)
print the_discriminant
the_rest(discrim,b,a)
def discrim(a,b,c):
discriminant = math.sqrt(math.pow(b,2)-4*a*c)
return discriminant, b,a
def the_rest(discrim,b,a):
x = ((-b + discriminant) / 2*a)
y = ((-b - discriminant) / 2*a)
print x,y
if __name__ == '__main__':
main()
我是Python的新手,我正在编写函数和返回变量,我对如何纠正代码感到有些困惑。我正在编写一个二次求解器程序,但我需要在“其余”函数中使用判别式和a,b,c值。 (这完成了其余的等式。)我对如何返回值并在另一个函数中使用它感到困惑。谢谢!
答案 0 :(得分:7)
the_rest(*the_discriminant)
或(我更喜欢这种方法):
d, b, a = discrim(1, 0, -4)
the_rest(d, b, a)
答案 1 :(得分:2)
我相信这是你要做的。你的discrim
函数返回一个元组(类似于数组)。然后,当您使用the_rest
调用*
时,表示您要发送元组的元素,而不是将元组本身作为一个参数
from __future__ import division
import math
def main():
the_discriminant = discrim(1,0,-4)
print the_discriminant
the_rest(*the_discriminant)
def discrim(a,b,c):
discriminant = math.sqrt(math.pow(b,2)-4*a*c)
return discriminant, b,a
def the_rest(discrim,b,a):
x = (-b + discrim) / (2*a)
y = (-b - discrim) / (2*a)
return x, y
if __name__ == '__main__':
main()
答案 2 :(得分:1)
虽然jamylak的回答是正确的,但返回一个简单的类也可以更加可维护。然后,如果您更改了函数/返回值/表示,则调用代码:
对于更大的项目来说,这绝对是最佳选择。
答案 3 :(得分:0)
在你的discrim
版本中返回元组没有任何问题。但是代码并没有那么多意义(IMO)。
尝试如下:
#!/usr/bin/env python
from __future__ import division
import math
def main():
a = 1
b = 0
c = -4
the_discriminant = discrim(a, b, c)
print the_discriminant
x, y = the_rest(the_discriminant,b,a)
print x, y
def discrim(a,b,c):
discriminant = math.sqrt(math.pow(b,2)-4*a*c)
return discriminant
def the_rest(d, b,a):
x = ((-b + d) / 2*a)
y = ((-b - d) / 2*a)
return x,y
if __name__ == '__main__':
main()