2017-02-07 8 views
-1

は、私が(のような12.3 + 12.6)式をユーザーに尋ねるしようと戻っている「12.3 + 12.6 = 24.9」 は、これまでのところ私のコードは次のようになります。文字列内に10進数を追加する方法は?

FinalEquation = 0 
Equation = input("Please enter an equation:") 
if "+" in Equation: 
    FinalEquation = sum(float(n) for n in Equation.split() if n.isdigit()) 
print(Equation,"=",FinalEquation) 

が、それは整数のみのために働きます小数点以下の数字ではありません

+1

を何をしようとして適切だろうように思えます定義すると、パーサーを作成します。 Python用の(良い)パーサジェネレータはたくさんあります。 https://wiki.python.org/moin/LanguageParsing –

+0

を参照してください(もちろん、自分で何かを手作業で記述することもできますが、優先ルールなどの自動処理が必要な場合、たとえば '1 + 2 * 3 'は乗算を最初に実行するか、 '((1 * 2)+ 3)* 4)'を正しく解析すると - 毛がかってしまう)。 –

+0

@CharlesDuffy私はあなたの最後の陳述に同意しません。演算子の優先順位を正しく処理する式パーサを手作業で書くことはそれほど難しくありません。 _ [Pythonでの単純なトップダウン解析](http://effbot.org/zone/simple-top-down-parsing.htm)_および_ [優先度上昇による式の解析](http://eli.thegreenplace .net/2012/08/02 /先行クライミングによる構文解析)_。 –

答えて

-2

あなたがしようとしている最も簡単な方法は、おそらくPython eval()組み込みを使用することでしょう。いくつかのかもしれないが(そのない素晴らしいアイデアは、evalを使用することを言うかもしれない)が、あなたが特定の言語の範囲内で任意の構文をサポートしたい場合は、

user_input = "42 + 23" 
print("{} = {}".format(user_input, eval(user_input))) 
+2

'__import __( 'shutil')を待つことができないユーザーが常にいるでしょう。rmtree(、True)' evaluate – donkopotamus

関連する問題