python
1shiki = input("43+") 2 3stack = "" 4nagasa = len(shiki) 5i = 0 6 7while i < 3: 8 if shiki[i] == "+": 9 r2 = int(stack[0]) 10 r1 = int(stack[1]) 11 kotae = r1 + r2 12 13 kotae = str(kotae) 14 stack = stack[2:] 15 stack = kotae + stack 16 else: 17 stack = shiki[i] + stack 18 19i = i + 1 20 21print(stack[0])
このプログラムを引き算にしたいのですが、符号を+から-に変えるだけで良いのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/15 14:26 編集
回答2件
0
Python
1shiki = input("RPN formula:") 2 3stack = [] 4 5i = 0 6while i < len(shiki): 7 ch = shiki[i] 8 if ch == "+": 9 r2 = int(stack.pop()) 10 r1 = int(stack.pop()) 11 kotae = r1 + r2 12 stack.append(kotae) 13 elif ch == "-": 14 r2 = int(stack.pop()) 15 r1 = int(stack.pop()) 16 kotae = r2 - r1 17 stack.append(kotae) 18 elif ch == "*": 19 r2 = int(stack.pop()) 20 r1 = int(stack.pop()) 21 kotae = r1 * r2 22 stack.append(kotae) 23 elif ch == "/": 24 r2 = int(stack.pop()) 25 r1 = int(stack.pop()) 26 kotae = r2 / r1 27 stack.append(kotae) 28 else: 29 stack.append(int(ch)) 30 i = i + 1 31print(stack)
投稿2021/06/16 05:07
総合スコア16612
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
2箇所「-」に変えればとりあえずは動くようになると思います。
また、変えるのでなく、elif節で追加するようにすれば、足し算も引き算も両方できるようになります。
ただ、入力をがべたがきで、スタックが文字列なので、
- 足し算としても、答えも含めて1桁しか対応していない。
- 引き算の場合、負の数にも対応できない。
という問題があるので、
- 入力はスペースで分けて入力してもらう。「14 23 +」のように。
- スタックは、文字列でなく、リストにする。格納する数値は文字列でなく数値に変換して入れたほうが扱いやすいでしょう。
とすることで、乗除や各種関数なども扱えるようにしやすくなりますよ。
投稿2021/06/15 14:45
編集2021/06/15 14:47総合スコア13687
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/15 14:53
2021/06/15 15:01 編集
2021/06/15 15:02
2021/06/15 15:04
2021/06/15 15:12 編集
2021/06/15 15:13
2021/06/15 15:17
2021/06/15 15:21
2021/06/15 15:22
2021/06/15 22:51
2021/06/16 00:41
2021/06/16 06:10
2021/06/16 06:21 編集
2021/06/16 06:47
2021/06/16 07:03
2021/06/16 07:10
2021/06/16 07:15
2021/06/16 07:18
2021/06/16 07:30
2021/06/16 09:09
2021/06/16 09:19
2021/06/16 09:57
2021/06/16 10:03
2021/06/16 10:10 編集
2021/06/16 10:14
2021/06/16 10:35
2021/06/16 10:54
2021/06/16 11:07
2021/06/16 11:11
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。