2016-06-11 15 views
1

プログラミングに慣れていないので、この質問はダムかもしれません。関数の出力を変数として保存し、それを別の関数で使用する

私はBzero1関数にTr1の値を導入する必要があります。

this result:私はモジュールを実行すると、私は以下の結果を得ます。

プログラムがBzero1機能を実行していないと私はなぜわかりません。それは私がTr1の値を正しく、あるいは何か他のものを導入していないからですか?私はBzero1T/Tc1の結果から得られTr1で、操作0.083-(0.422/Tr1**1.6)を実行したいです。

私はあなたの助けをたくさんいただければ幸いです。

T = float(input("Introduce system temperature in Kelvin: ")) 
print("System temperature is: ", T) 

Tc1 = float(input("Introduce critical temperature of component 1: ")) 
print("Critical temperature of component 1 is: ", Tc1) 

def Tr1(T, Tc1): 
    print("Relative temperature 1: ", T/Tc1) 

Tr1 = Tr1(T, Tc1) 

def Bzero1(Tr1): 
    print("Bzero 1: ", 0.083-(0.422/Tr1**1.6)) 
+0

あなたは決して* Bzero1関数を呼び出すことはありません。 –

+0

また、 'Tr1'(関数)の名前をその関数の戻り値で置き換えます。しかし、あなたの関数*は明示的に何も返さない*ので、 'Tr1'を' None'に設定することになります。 'print()'はあなたのコンソールや端末に書き出しますが、あなたが変数に代入することは何も返しません。 –

+1

重要な情報のスクリーンショットにはリンクしないでください。あなたの質問にテキストとして情報を含めてください。 – khelwood

答えて

0
  1. ような置換の変更を避けるために、Tr1関数値を交換しないでください:コードで

    Tr1_value = Tr1(T, Tc1) 
    
  2. コールBzero1機能:

    Bzero1(Tr1_value) 
    
  3. 値を返すようにTr1を変更:

    def Tr1(T, Tc1): 
        result = T/Tc1 
        print("Relative temperature 1: ", result) 
        return result 
    

また、私はあなたがpython official tutorialの表情を取ることをお勧めしましょう - そこにあなたのpythonについて多くを学ぶことができます...

グッドラック!

+0

現在、OPのTr1関数は何も返しません。したがって、Tr1_valueは常にOPでないと思われる「None」になります。 – Keiwan

+0

@Keiwanそれを指摘してくれてありがとう、本当にそれを逃した。 –

+0

ありがとうございます。私はちょうど出発して以来、私はそのチュートリアルを見てみましょう。 – Rodolfo

0

defのみ、それを呼び出していない、関数を定義しています。例えば。

def foo(a): 
    print a * 2 

は、引数aを取る関数fooが今そこにあることを意味します。 afoo(a)は、の内部にあるの変数の名前です。

だからあなたの場合には

def Bzero1(Tr1): 
    print("Bzero 1: ", 0.083-(0.422/Tr1**1.6)) 

は、引数Tr1を取るとして機能Bzero1を定義し、それを呼び出すことはありません。あなたはTr1と呼ばれる同じように、関数を呼び出す必要があります:あなたはそれがどのかなり早く混乱状態になる。この方法は、変数は、あなたの関数の外にあることを確認し、関数内の変数であることができ

Bzero1(Tr1) 

。したがって、外部プログラムの変数には異なる名前を使用する方が良いでしょう。内部の機能ここで

はあなたが役立つかもしれないいくつかのより多くのベストプラクティスを、次のとおりです。

  • 関数定義とメインを混ぜるとは対照的に、最初のプログラムのメインコードをすべての機能を定義し、実行するために、一般的に優れていますプログラム。

  • もう1つのベストプラクティスは、関数が入力からの出力を計算し、出力を他の場所で処理するようにすることです。これにより、プログラムの他の部分で関数を再利用できるようになりますが、ユーザーにいつ、何を出力するかは常に管理しています。

  • 最後に、通常は名前を再割り当てするべきではありません。 Tr1 = Tr1(...)は、Tr1はもはや関数の名前ではなく、Tr1によって返された結果の名前であることを意味します。要するに、異なるものを異なる名前で使用します。

これらのヒントを適用すると、ように見えるかもしれませんあなたのコードは次のとおりです。私はあなたの変数の意味論的な意味を知らないので、私は小さな文字を使用していた

# function definitions first 
def Tr1(vt, vtc1): 
    return vt/vtc1 

def Bzero1(vtr1): 
    return 0.083-(0.422/vtr1 ** 1.6) 

# get user input 
T = float(input("Introduce system temperature in Kelvin: ")) 
print("System temperature is: ", T) 

vTc1 = float(input("Introduce critical temperature of component 1: ")) 
print("Critical temperature of component 1 is: ", vTc1) 

# run calculations 
vTr1 = Tr1(T, vTc1) 
vBz1 = Bzero1(vTr1) 

# print output 
print("Relative temperature 1: ", vTr1) 
print("Bzero 1: ", vBz1) 

注意接頭辞としてv - 一般的には、temperatureまたはtemp1temp2などのような意味のある名前を使用する方が良いです。プログラムは数学の論文ではありません。

+1

'Tr1'関数はある値を返す必要があります。そうでなければ、' vTr1'は常に 'None'になります。 – Keiwan

関連する問題