2019年10月2日 / 最終更新日時 : 2019年10月2日 g6no3 Python Python(二分木で数式変換表示電卓) 中置記法、逆ポーランド記法で入力した式から二分木を作成して計算するプログラムを作成しました。 <実行結果> ノードを二分木に決めてsinなどの演算では右のノードのみを利用するように決めうちで作成している部分が冗長になって […]
2019年10月2日 / 最終更新日時 : 2019年10月2日 g6no3 Python Python(クラス初期化で機能拡張) クラスのコンストラクタに引数を持たせることで前回作成した逆ポーランド記法電卓の演算子を拡張できるようにしました。 def __init__(self,*xs) のように初期化(コンストラクタ)で引数を持たせて、利用するク […]
2019年10月2日 / 最終更新日時 : 2019年10月2日 g6no3 Python Python(クラス定義と継承) Pythonでのクラス定義の仕方についてはPython(オブジェクト指向)の投稿で説明しましたので、今回は継承を用いたクラス定義についてポイントを確認していきます。 <プログラム実行結果> class Stack: のよ […]
2019年9月27日 / 最終更新日時 : 2019年9月27日 g6no3 Python Python(オブジェクト指向で逆ポーランド記法電卓) 前回の投稿では演算子の辞書やクラス変数がグローバルに置かれていたため、カプセル化が不十分でした。今回はCalculatorクラス内にスタックや辞書等を入れ、外から不要な変数の書き換えができないような設計にしています。 c […]
2019年9月26日 / 最終更新日時 : 2019年9月26日 g6no3 Python Python(オブジェクト指向) Pythonでクラス定義を行う場合、クラス名は大文字から書くようにしましょう。上記では空のAというクラスを定義し、それをクラス変数aに代入することでアクセスしています。クラスはintやfloatと同じように新たな型として […]
2019年9月26日 / 最終更新日時 : 2019年9月26日 g6no3 Python Python(逆ポーランド記法電卓 改) 今回は演算子の処理を辞書と高階関数を用いて拡張性の高い記述にさせるとともにスタックをクラス定義することで、スタックをより安全に利用できるプログラムにしました。 入力で得た要素に対してリスト内包処理を行おうとしましたが、前 […]
2019年9月26日 / 最終更新日時 : 2019年9月26日 g6no3 Python Python(逆ポーランド記法電卓 再帰版 その1~4) リストの各要素に対して再帰処理を利用することで、逆ポーランド記法の数式を処理するプログラム1~4です。各プログラムではスタックと再帰処理を共通とし、各演算子へのアプローチをより拡張性の高い記述に変えています。ポイントとな […]
2019年9月25日 / 最終更新日時 : 2019年9月25日 g6no3 Python Python(中置記法から二分木作成) 様々な表記法から二分木を作成して変換、計算処理を行うプログラムを作成しようと奮闘中です。中置記法から二分木を作成するアルゴリズムは以下のサイトを参考にさせていただきました。 smdn:総武ソフトウェア推進所https:/ […]
2019年9月20日 / 最終更新日時 : 2019年9月20日 g6no3 Python Python(後置記法処理 改) 追加内容と作成コードは以下になります。 1.使用できる演算子の追加(**、//、%、sin、cos、tan、log、r)2.符号混じり、浮動小数点数の入力に対応3.後置記法で入力された数式を中置記法の式にして表示4.エラ […]
2019年9月19日 / 最終更新日時 : 2019年9月19日 g6no3 Python Python(後置記法の数式処理) スタックを利用し、Input、再帰、try:except:、exitで終了という要素を入れた後置記法の数式処理プログラムを作成しました。