2017-09-25 11 views
2

私は今、テストをしたい対象とどのような対象にするのが難しいのかをユーザーに尋ねるコードをプログラムし始めました。そして、明らかに、そのテストを提供します。私はifステートメントのためのテストをチェックし、それがどれほど難しいかを調べるための関数を作成しました。コードをテストするためのランダムなスローワン関数を作成しました。私はあなたにコードを示します(明らかに非常に早いアルファで、どこでも手近に終わっていません)。そして問題を説明します。関数をPythonの関数の外から取り出す方法は?

def which_test(real_dif, real_test, give_test): 
    if difficulty == real_dif and test == real_test: 
     give_test 

def easy_CS(): 
    print("HEY") 

while True: 
    test = str(input("What test do you want to take? Computer Science, History or Music? ").strip().lower()) 
    difficulty = str(input("Do you want to take the test in easy, medium or hard? ").strip().lower()) 
    which_test("easy", "computer science", easy_CS()) 

は問題があり、easy_CS()機能は関係なく、入力変数が何であるかを起動しませんます。私はtest変数に "JFAWN"を、difficulty変数に "JDWNA"を入力することができ、それでも "HEY"が表示されます。変数を実際に取るようにするにはどうすればよいのですか、あるいはそれを意図した通りに動作させるにはどうしたらいいですか?

+0

グローバル変数を使用すると便利です。 –

+3

あなたは間違った場所で関数を呼び出しています。 'which_test'の中で呼び出された括弧を動かす必要があるので、あなたは*関数*を渡しています。*結果*を渡す必要はありません。 @ChetanVasudevanこれはめったに真実ではない。 – jonrsharpe

+0

@chetanvasudevanなぜあなたは 'global'の使用を提案しますか?ここにはその必要はありません。 – roganjosh

答えて

6

この機能をご自身でと呼びます。ここにかっこを参照してください。彼らは、関数を呼び出す:あなたがする何を意味するのか

which_test("easy", "computer science", easy_CS()) 
             ^^^^^^^^^^ 

def which_test(real_dif, real_test, give_test): 
    if difficulty == real_dif and test == real_test: 
     give_test() # call the function 

# more code... 
which_test("easy", "computer science", easy_CS)) 
      # pass the function itself ^^^^^^ 

ので、ノー括弧 - なし関数呼び出し。

関連する問題