2016-03-28 20 views
2

私は学校のプロジェクトを行っていますが、私は関数間の通信に助けが必要です。この私が、私はプログラムを実行すると、私は、それを使用することができますので、質問の関数に行くために難易度の関数から変数「レベル」を取得しようとしています、これまでPythonの関数間で通信する

def difficuilty(): 
level = 0 
while level >=4 or level == 0: 
    level = int(input("Please enter the difficulty (1/2/3)")) 
    if level == 1: 
     yesNo = input("you have chosen difficulty 1, is this correct? ") 
     if yesNo.upper() == 'Y': 
      level = 1 
     elif yesNo.upper() == 'N': 
      level = 4 
     else: 
      print ("You have entered the wrong thing") 
    elif level == 2: 
     yesNo = input("you have chosen difficulity 2, is this correct? ") 
     if yesNo.upper() == 'Y': 
      level = 2 
     elif yesNo.upper() == 'N': 
      level = 4 
     else: 
      print ("You have entered the wrong thing") 
    elif level == 3: 
     yesNo = input("you have chosen difficulity 3, is this correct? ") 
     if yesNo.upper() == 'Y': 
      level = 3 
     elif yesNo.upper() == 'N': 
      level = 4 
     else: 
      print ("You have entered the wrong thing") 

return level 


def question(level): 
    if level == 1: 
     print ("hi") 

def main(): 

    getName() 
    difficulty() 
    question(level) 

を持っているものです、それは私を与えます'NameError:Name'レベルが定義されていないというエラーが表示されます。誰かが私を助けてくれますか?おかげ

答えて

2

変数levelから返されるレベルの値を取得する必要があります。アクセスするには、main()の範囲内の変数(level)を定義する必要があります。試してみてください:

def main(): 
    getName() 
    level = difficulty() 
    question(level) 

この方法で、(difficulty()level命名)difficulty()から返される変数はmain()にアクセス可能です。

また、実際のコードですか?私は、difficulty()のようないくつかの間違いに気づいており、これを実行すると予期しない結果になるdifficuilty()の字下げがありません。特定の問題が何であるかを簡単に伝えるように逐語コードを投稿してください。

+0

また、getNameが定義されていません – aless80

+0

私はスペルミスを修正しました。そして、私はこれを投稿したときにgetName関数を切り捨てました。 –

+0

@JamesBramleyよろしくお願いします。 –

0

あなたはなくmain()の範囲で、あなただけの2つの関数の範囲内で定義されているあなたの難しい機能

def main(): 
    getName() 
    level = difficulty() 
    question(level) 
+0

私はdownvoteをしませんでしたが、Pythonでは変数割り当てに 'def'を使用しません。 –

0

私はglobalメソッドがそうであると信じています。関数内で使用されているローカル引数を呼び出し可能なグローバル引数に変換します。

def difficuilty(): 
    level = 0 
    while level >=4 or level == 0: 
     level = int(input("Please enter the difficulty (1/2/3)")) 
     global level 

その方法(レベル)は呼び出し可能になります。あなたのアプリケーションを与えられた最後の1つは、globalメソッドを使用するとその問題を抱える可能性があるため、Miloの答えになります。