2017-06-14 2 views
0

私はWindows 10のデバイスでpython 3.1を使用していますが、問題が発生しました。代入文が関数を継承しないpython 3.1

私が作成した別の関数で定義された割り当てを使用すると、割り当てが機能しません。私の問題は長いコード行ですが、何が起きているのかを説明するために、より小さなバージョンを作成しました。

def test(): 
    """ takes input """ 
    f = input("1 or 2? ") 
    if f == 1: 
     t = "wow" 
    if f == 2: 
     t = "woah" 

def test2(t): 
    """ Uses input """ 
    print(t) 

def main(): 
    test() 
    test2(t) 

main() 
input("\n\nPress enter to exit") 

入力が選択された後にプログラムが割り当て「t」を使用しない理由はわかりません。

私の目標は、第1の機能からの入力を使用して、第2の機能の結果を変更することです。もちろん私の元のプログラムは単純なプリント機能よりも複雑ですが、このデモンストレーションは自分のプログラムを台無しにしていることを知っています。私の元のプログラムは.txtファイルを開くことを扱い、入力はどのファイルを開くかを選択しています。

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

+1

あなたのコードは、問題の多くを持っているF'は 'ので....'のF == '1'が動作しません。 'main'に定義されていないとき' t'を 'test2()'に渡しています – depperm

+0

''グローバルt''を関数ブロックの最初の行(docの後ろ)ここでグローバル変数 '' t''にアクセスします。 (これは '' test() ''の中で=>を変更した場合にのみ必要です)。あるいは、 '' main() ''の値にtを代入してtを代入する必要があります。 – cmdLP

+0

文字列部分はテスト中に悪いことでしたが、渡すことは自分の問題を把握しようとしています。それをどうやって説明していただけますか? – Collingpc

答えて

1

あなたはTEST2でそれを使用するために「t」を返却する必要があります。

def test(): 
    """ takes input """ 
    f = input("1 or 2? ") 
    if f == '1': 
     t = "wow" 
    if f == '2': 
     t = "woah" 
    return t # This returns the value of t to main() 

def test2(t): 
    """ Uses input """ 
    print(t) 

def main(): 
    t = test() # This is where the returned value of t is stored 
    test2(t) # This is where the returned value of t is passed into test2() 

main() 
input("\n\nPress enter to exit") 
+0

'if'文で文字列の値もチェックします。もしf == '1'なら '' f == '2'なら '' – DatHydroGuy

+0

と変更してください。誰か他の人が指摘したint/stringの問題を変更しましたが、それでも同じエラーが出るでしょう – Collingpc

+0

@ DatHydroGuy。 – paperazzo79