2012-02-20 14 views
1

私は、別の関数から2つの返された変数を取って、少し余分なパディングテキストを外部テキストファイルに書き込む関数を持っています。適切な「引数」を使って関数を呼び出す方法

私は、テキストファイルに書き込むために使用していたコードは以下の通りですが、それは私が唯一できる午前現時点ではプログラム

def function1() 
# Some code 

def function2() 
# Some code 
return startNode 
return endNode 

def function3(var) 
# Some code 
return differentVariable 

def createFile(startNode, endNode): 
    outputFile = open('filename.txt','w')     # Create and open text file 
    start = chr(startNode +65)        # Converts the int to its respective Char 
    end = chr(endNode +65)         # Converts the int to its respective Char 
    outputFile.write('Route Start Node: ' + start + '\n') # e.g Route Start Node: B 
    outputFile.write('Route end node: ' + end + '\n')  # e.g Route End Node: F 
    outputFile.write('Route: ' + Path + '\n')    # e.g Path: B,A,D,F 
    outputFile.write('Total distance: ' + Distance)   # e.g Total Distance: 4 
    outputFile.close          # Close file 


if __name__ == "__main__": 
    function1() 
    function3(function2()) 
    createFile(# Don't Know What Goes Here ) 

の底にif文を使用して、実行時に自動的に呼び出されていますそれを手動で呼び出して、1はstartNode値と5ですcreateFile(1,5)を入力して、この機能を実行するためには、エンドノード値

あるしかし、私は関数を呼び出すためにif文でcreateFile(startNode, endNode)を置くことになっている場合、それはNameError: name 'startNode' is not defined私に語ったと、次にそれは明らかに私にもendNodeの同じエラーを与えるでしょう

値は、プログラムの開始時にstartNodeとendNodeの値が何であるかによって変わる可能性があるので、値を手動で入力する必要はありません。

+0

しかし、正しい値が来ているからではなく、あなたはタプルを返す必要がありますか?それらは機能1,2または3の結果ですか?その場合、それらの関数の戻り値を取得してcreateFileに渡すのはどうですか? –

+0

'function1()' 'function2()'と 'function3()'のコードを投稿してください。 – aganders3

答えて

2

」だから、何がやりたいことは関数から値を戻し、代わりにそれらを保存していますあなたの例ではfunction2でした。実行は最初の戻り値で関数を終了し、2番目の戻り値に決してしません。アデが説明するように、あなたがfunction2を呼び出すときに行う、そして、

def function2(): 
    # set the values of startNode and endNode here 
    # e.g. 
    startNode = 1 
    endNode = 5 
    return (startNode, endNode) 

if __name__ == "__main__": 
    startNode, endNode = function2() 
    createFile(startNode, endNode) 
0

数値にはstartNodeendNodeを割り当てる必要があります。

彼らは2つの以前の機能による返品の場合は:

if __name__ == "__main__": 
    startNode = function1() 
    endNode = function3(function2()) 
    createFile(startNode, endNode) 
+0

function2()は、startNodeとendNodeの両方を整数 – Daniel

+1

として返すので、 'createFile(startNode、endNode)'を呼び出す前に 'startNode、endNode = function2()'があったはずです。 –

1

しかし、私は文が関数を呼び出す場合にcreateFile(startNode, endNode)を置くことになっている場合、それは明らかにNameError: name 'startNode' is not defined

私に語りましたその時点で見ているのは次のとおりです。

​​

最後の呼び出しが成功するようにするには、それらの変数をどこかに定義する必要があります。

私は、前にこれらの関数呼び出しを使用して値を何らかの方法で初期化していると推測しています。関数内の変数は通常ローカルなので、おそらくstartNodeendNodeにいくつかの方法を "設定"しても機能しません。

if __name__ == "__main__": 
    startNode = function1() 
    endNode = function3(function2()) 
    createFile(startNode, endNode) 

をと機能は次のようになります:あなたはあなたのように2つの変数を返すことができません

def function1(): 
    # some computations 
    return startNode 

def function3 (param): 
    # more computations 
    return endNode 
関連する問題