2016-11-27 13 views
-1

ラムダ関数のマッピング規則として実行するために文字列入力を適切な形式に解析するにはどうすればよいですか?ラムダ関数(Python)への文字列入力の解析

fx=type(input("Enter a polynomial: ")) 

これは私の入力です。arbirtray多項式を入力したいと思います。

f= lambda x: fx 

は今、私は私のラムダ関数は、彼らが例えばx**2のような通常のマッピング規則であるかのように、入力関数から文字列を実行できるようにしたいです。

+0

質問が不明です。多項式を表す文字列を入力して変数 'fx'に格納し、それをより簡単に評価できる新しい文字列形式に解析することを意味しますか?または、その文字列を評価し、別のラムダ関数で使用できる関数が必要ですか?または、他の何か?私は書かれたラムダ式が無意味であることを実感してほしい。 –

+0

'fx'はPython 2.xを使わない限り、常に' str'になります。 – jonrsharpe

+0

はい、私は2番目のオプションをしたいと思います。表現は大きなプログラムの一部です、これは私の問題を引き起こす部分だけです –

答えて

1

まず、input()は、this answerで指定されているように、Python 2とPython 3では動作が異なります。

eval()

は、最も単純な選択肢の一つである:

パイソン3

>>> fx = input("Enter a polynomial: ") 
Enter a polynomial: x**2 + 2*x + 1 
>>> f = lambda x: eval(fx) 
>>> f(1) 
4 

パイソン2

>>> fx = raw_input("Enter a polynomial: ") 
Enter a polynomial: x**2 + 2*x + 1 
>>> f = lambda x: eval(fx) 
>>> f(1) 
4 

eval()が任意のコードを実行することができるように、しかし注意してください。

+0

ありがとう、それは今正しく動作します –