2017-03-09 4 views
1

私はPythonでtkinterモジュールを使って電卓をプログラムしようとしています。電卓の各数字と記号に対応する14個の関数を作っています。以下のコードは、たとえば数字が1のものです。関数間で変数を転送するにはどうすればよいですか?

ただし、プログラムは必要な値を返しません。私は前の関数の値をパラメータとして次の関数に使用しますが、それらは通過しないように見え、結果は常に0になります。

変数abは計算に使用される2つの番号に対応し、numaときbにそれを与えるために番号を付与する際に知っているプログラムするためのカウンタです。私はこのコードでプリントを挿入しようとしましたが、aとbは正しくプリントされていましたが、リターンに問題があるようです。

ご協力いただければ幸いです。

def num1(num,a,b): 
    if num == 0: 
     a=a+1 
     num=num+1 
    elif num == 1: 
     b=b+1 
    return num 
    return a 
    return b 
+2

'return num、a、b'? – Dmitry

+0

https://docs.python.org/2.0/ref/return.html最初の 'return'だけが評価され、実際には"返されます "。残りの2つのリターンは決して実行されません。 –

+0

問題は返されません。 – cezaryskrodzki

答えて

2

Pythonの関数は一つだけ値を返します。 return a;return bと書くと、最初のオカレンスだけが返されます。あなたがする必要がどのような

は、それらの要素をパックし、タプルとしてそれらを返します:

def num1(num,a,b): 
    if num == 0: 
     a=a+1 
     num=num+1 
    elif num == 1: 
     b=b+1 
    return num, a, b 
1

あなたが仕事の流れに到達した最初のreturnの文は、現在の終了を引き起こすことを心に留めておく必要があります与えられた値を返します。 return a; return bラインは、最初の文return

+0

それを書き込んだ方法戻り値num、a、bしかし1 + 1はまだ0 – cezaryskrodzki

+0

です。関数が呼び出される方法によって異なります。出力は入力した値に依存するため、例を追加してください – Gabrio

0

あなたはリスト、辞書、タプル、変数を返すことができた後、呼び出し元に実行戻るに達したことはありません。しかし、関数は複数回返ることはできません。値をリストに挿入してからリストを返すことができます。

+0

しかし別の値として機能する? – cezaryskrodzki

+0

リストから変数に値を再度抽出することができます。 a = your_list [0]のように –

関連する問題