2017-09-26 16 views
0

私は関数を定義する方法を知っていますが、2つの結果を出力する方法はわかりません。t=0t=1です。ここでpythonの1つの方程式に従って複数の結果を計算して出力するにはどうすればよいですか?

Output for g(0) and g(1)

私のコードは次のとおりです。

from math import exp 
from math import pi 
from math import sin 


def g(t): 
    a = exp(-t) 
    b = sin(pi*t) 
    g = a*b 
    return g 

t=0 
print(g) 
+0

あなただけの 'G'を印刷することはできません!あなたが言ったように、 'g(0)'と 'g(1)'を印刷したいとします。あなたがそれを伝えない限り、コンピュータはこれを知らない。 –

+0

なぜ3つの別々の輸入品を使用していますか? 'from math import exp、pi、sin'だけ使うことができます。 –

答えて

2

あなたの関数

gを呼び出す機能です。 print(g)は文字通り機能オブジェクトを印刷します。 print(g(t))は、tで評価されたg関数を出力します。だから、あなたはgの定義の後にこれをしたい:

print(g(0)) # Print g evaluated at t=0 
print(g(1)) # Print g evaluated at t=1 

g = a * bをしないでください変数名

を再利用しないでください。その名前をhのように変更します。これを行うことで、gをローカルスコープとは異なるものに再定義してしまい、混乱する可能性があります。関数もオブジェクトです!

あなたg機能のためにあまりにも多くの中間変数

を使用しないでください、あなたは3つの中間変数の合計を使用します。通常、中間変数を持つことは可読性に役立ちます。ここでは、それは必要はありません。

def g(t): 
    return exp(-t) * sin(pi * t) 

(これは、それがよりとにかく仕事に似てます...)

+1

@ user8673326:割り当て 'g = a * b'のHyperNeutrinoのメモに加えて、おそらく値を名前に代入するのではなく、 'return a * b'を使うだけです。 –

+0

@ZachGatesそうです。とにかく 'g'関数全体を書き直したいと思っています:Pそれを追加します、ありがとう – HyperNeutrino

0

あなたが将来的にあなたの関数複数回呼び出したい場合は、あなたにあなたの引数を入れることができますまた、

for arg in [0, 1]: 
    print(g(arg)) 

あなたはgに再割り当てずに値を直接返すことができます:リストは、これを行う

def g(t): 
    a = exp(-t) 
    b = sin(pi*t) 
    return a*b 
0

Pythonの関数から複数の値を返すためにタプルを使用しています。

def two_vals(): 
    return 11,22 

>>> two_vals() 
(11, 22) 

あなたは複数の名前付きの値に複数の値を割り当てるためにタプルの拡張を使用することができます。

>>> g1, g2=two_vals() 
>>> g1 
11 
>>> g2 
22 

Soが両方の値を計算するように関数を書き直します。両方(リスト、タプル、dict、どんなデータ構造体でも)を返し、2つの値を出力します。この割り当てを果たすために

しかし、あなたは2回だけgを呼び出して印刷する文字列に配置できます。

def g(t): 
    a = exp(-t) 
    b = sin(pi*t) 
    g = a*b 
    return g 

def both_g_str(): 
    return "g(0): {}, g(1): {}".format(g(0), g(1)) 
関連する問題