2
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 の値を使用する必要があります。(方程式の残りの部分を処理します。) 値を返し、それらを別の関数で使用する方法について、ちょっと混乱しています。ありがとう!

4

4 に答える 4

7
the_rest(*the_discriminant)

または(そして私はこの方法を好みます):

d, b, a = discrim(1, 0, -4)
the_rest(d, b, a)
于 2012-07-13T02:07:07.450 に答える
2

これがあなたがやろうとしていることだと思います。関数はタプルを返しますdiscrim(配列に似ています)。the_rest次に、 a を使用して呼び出すと*、タプル自体ではなく、タプルの要素を 1 つの引数として送信することを示します。

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()
于 2012-07-13T02:18:34.650 に答える
1

jamylakの答えは正しいですが、単純なクラスを返す方がはるかに保守しやすい場合もあります。次に、関数/戻り値/表現を変更した場合、呼び出しコード:

  • 名前/識別子ベースです。非常に柔軟に変更できます。順序に依存しないか、タプルの長さに依存しません。また、コード全体で暗黙のルールの順序付けを入力したり、不必要に重複したりする手間も省けます。
  • 重大な変更がある場合、インタープリターは実行時ではなくモジュールのロード時にエラーになるため、エラーを見逃すことはありません。これは、名前付きメンバーにアクセスしようとしていて、コードのどこにも形式化されていないタプル順序などの「隠された」または「暗黙の」ルールに依存していないためです。

大規模なプロジェクトの場合、これは間違いなく進むべき道です。

于 2012-07-13T02:20:51.953 に答える
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()
于 2012-07-13T02:18:15.090 に答える