2017-11-13 2 views
2

私はuser_inputに基づいて特定の関数を選択して実行するPython 3.6でプログラムを作成しています。辞書で関数を実行する| Python 3

コードは、実行する関数を正しく決定し、実際には実行しません。機能は機能addition()を実行したことがないこのコードを使用して

def addition(): 
    1+1 

user_input = input("What operator do you wish to use?") 

myOperators = {"Addition":addition} 

if user_input in myOperators: 
    myOperators.get(user_input) 

働きます。しかし、私はこれを行う場合ので、それは、正しい値を選択することを確認することができます。

if user_input in myOperators: 
    print(myOperators.get(user_input)) 

を、それが<function addition at 0x7f0973026620>

+3

なるので、関数オブジェクトを返しますmyOperators.get(user_input)あなたの場合

。 –

答えて

4

を出力Pythonは周りに渡され、リストや辞書に格納できるオブジェクトとしての機能を扱います。関数を実際に呼び出すには、オブジェクトの後にかっこを使用する必要があります。それはあなたが `myOperators.get(USER_INPUT)ので、()`(末尾の呼び出しで)関数を呼び出す必要があり

myOperators.get(user_input)() 
+0

ありがとうございました! 私はこの間数日間苦労してきました。 –

+0

可能な 'KeyError'は' TypeError: 'NoneType'オブジェクトは呼び出し可能ではありません 'よりもデバッグするのが容易なため、 'get'の代わりに' __getitem__'(つまり、角括弧)を使用するべきでしょう。 – timgeb

関連する問題