0

ユーザーが方程式を入力して答えを得ることができる電卓プログラムを作成しようとしています。このための完全なコードは必要ありません。特定の部分について助けが必要なだけです。

私が取ろうとしているアプローチは、ユーザーに式を文字列 ( raw_input) として入力してもらい、その入力から数値を整数に変換しようとすることです。その後、ユーザーがどのオペランドを使用し、それが方程式のどこにあるかに応じて、オペランドに実行させたいことを実行させる方法を知る必要があります。

このタスクを達成するために使用できる方法は何ですか?

これが基本的に私が今持っているものです:

    equation_number = raw_input("\nEnter your equation now: ")
    [int(d) for d in equation_number if d.isdigit()]

これらの行は、入力を収集し、数値を整数に変換しようとするためのものです。残念ながら、うまく機能していないようで、とにかく .isdigit は正の数に対してしか機能しません。

Edit- aong152 は、私が調べた再帰的解析について言及しており、望ましい結果が得られているようです。

http://blog.erezsh.com/how-to-write-a-calculator-in-70-python-lines-by-writing-a-recursive-descent-parser/

しかし、この投稿の著者が使用しているコードを理解していません。再帰的な構文解析の基本を知っている人はいますか?

4

4 に答える 4

1

あなたが作ろうとしているタイプのプログラムは、おそらくあなたが思っているよりも複雑です

最初のステップは、文字列を各引数に分離することです。

ユーザーが次のように入力するとします。

1+2.0+3+4

int に変換する前に、文字列をコンポーネントに分割する必要があります。

  • 1
  • +
  • 2.0
  • +
  • 3
  • +
  • 4

これには再帰パーサーが必要ですが、これは (Python を初めて使用する場合) 少しハードルになるかもしれません。

各パーツを文字列として別々に持っていると仮定すると、

float("2.0") = 2.0
int(2.0) = 2

ここにヘルパー関数があります

def num (s):
    try:
        return int(s)
    except exceptions.ValueError:
        return int(float(s))
于 2013-05-09T00:41:29.963 に答える
0

文字列を返し、intを返すため、raw_input単に使用する代わりにinputraw_inputinput

これは非常に単純な計算機です。

def calculate():
    x = input("Equation: ")
    print x
while True:
    calculate()

関数はinputを受け取って出力し、while ループがそれを再度実行します。

これがあなたが望むものかどうかはわかりませんが、ここに行きます。また、ループを終了する方法を作成する必要があります

于 2013-05-09T00:31:18.597 に答える