2017-05-07 7 views
-1

ユーザーが関数(「3 * x + 3」など)をタイプし、特定のx値からYの値を取得するプログラムを作成したいとします。Pythonでstrリテラルをintリテラルに変更するにはどうすればよいですか?

アイデアは、ユーザーが「3 * X + 3」の後に、プログラムは3 xを置き換え、この場合、これはコードI 12.

ある、Yの値を出力することです作った:私はプログラムを実行し、関数を記述する場合

K=raw_input() 
x=3 
result = int(K) 
print (result) 

、エラーが表示されます。

ValueError: invalid literal for int() with base 10: '3*x+3'

私は式を入力するときにのみ発生(以前に定義されていても)私は "int()"は数字だけのstrリテラルでのみ動作すると思いますが、数値と変数(もちろん定義されています)を扱う必要があります。

3*x+3strからintに変更するには、int()の代わりに何を使用しますか?

+1

それは文字列に変更するだけではありません...どのようにxを解決する予定ですか?算術演算子のリストを定義し、それらの文字列を配列に分割する必要があります。それから、実際の操作を念頭に置いて操作を進め、実際に操作を実行する必要があります。 – kyle

+2

私はこれがあなたの宿題であると仮定していますが、このユーザーは最近似たようなことを尋ねて、より良い方法で解決策に近づいています。 http://stackoverflow.com/questions/43837842/efficient-algorithm-to-compose-valid-expressions-with-specific-target – kyle

答えて

2

追加の依存関係を気にしない場合は、numexpr(正確に軽量ではないサードパーティ製のモジュールを、しかし、多くのオプションをサポート)を使用して、必要なものを正確に行い、そのevaluate機能をすることができます

import numexpr 
x = 3 
K = "3*x+3" 
result = numexpr.evaluate(K).item() 
print(result) # 12 
関連する問題