1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

四則計算の数学記号をPython演算子に瞬時に置き換える方法

Posted at

四則計算の数学記号をPython演算子に瞬時に置き換える方法を紹介します。

Pythonで四則計算するときの問題点

Pythonで四則計算するときは、手動で演算子に置き換える必要があります。

例えば、次のような問題があったとします。

5×1-4÷2

これをPythonで計算しようとすると、以下のように書き換えなければなりません。

5×1-4÷2
5*1-4/2

print(5*1-4/2)

#出力結果 3.0

このとき、×や÷の数学記号を、Pythonの演算子である*や/に置き換えるのが非常に面倒です。

特に、すでに大量の問題がテキスト形式で用意されており、その解答作りをしなければならないときには、かなり面倒な作業になります。

そこで、この面倒な作業をPythonで処理できるようにします。

数学記号を演算子に置き換えるには?

数学記号を演算子に置き換えるには、複数の文字列を同時に置き換える必要があります。

具体的には以下のコードを利用します。

4×3-6÷2
s = "4×3-6÷2"
old = ["×", "÷"]
new = ["*", "/"]
for x, y in zip(old, new):
    s = s.replace(x, y)
print(s)

#出力結果
#4*3-6/2

応用 その1

四則計算には、次のような問題もあります。

3(4×3)-2(6÷2)

このような問題をPythonで計算しようとすると、

3(4×3)-2(6÷2)

3*(4*3)-2*(6/2)

のように書き換えなければなりません。

このとき、括弧とその前の数字との間に*を入れなければならなくなります。

これも相当、面倒な作業です。

そこで、このような問題に対処するためにコードに付け足します。

コード修正 3(4×3)-2(6÷2)
s = "3(4×3)-2(6÷2)"


old = ["×", "÷","1(","2(","3(","4(", "3(", "5(","6(","7(","8(","9("]
new = ["*", "/","1*(","2*(","3*(","4*(", "3*(", "5*(","6*(","7*(","8*(","9*("]
for x, y in zip(old, new):
    s = s.replace(x, y)
print(s)
#出力結果
#3*(4*3)-2*(6/2)

応用 その2

次のように複数の問題があったとします。

-7-6×(-3)

2×(-5)+(-9)

-16-6÷(-2)

(-3)×(-4)-(-5)×2

このとき、一つ一つの問題をpythonで置き換えていくのは面倒です。

そこで、4つまとめて処理するようにコードを書いていきます。

複数の問題を解く

s = "-7-6×(-3)" "\n" "2×(-5)+(-9)" "\n" "-16-6÷(-2)" "\n" "(-3)×(-4)-(-5)×2"


old = ["×", "÷","1(","2(","3(","4(", "3(", "5(","6(","7(","8(","9("]
new = ["*", "/","1*(","2*(","3*(","4*(", "3*(", "5*(","6*(","7*(","8*(","9*("]
for x, y in zip(old, new):
    s = s.replace(x, y)
    
print(s)

#出力結果
-7-6*(-3)
2*(-5)+(-9)
-16-6/(-2)
(-3)*(-4)-(-5)*2

残された課題

四則計算の数学記号をPython演算子に瞬時に置き換えることはできました。

しかし、この方法では、置き換えた後で、さらに解答を得るために作業をしなければなりません。

たとえば、先の問題の解答を作るために以下のコードを作成する必要があります。

解答

print(-7-6*(-3))

print(2*(-5)+(-9))

print(-16-6/(-2))

print((-3)*(-4)-(-5)*2)

#出力結果
11
-19
-13.0
22

コピペして貼り付けるだけなので、たいした手間ではありませんが、できれば、数学記号をPython演算子に瞬時に置き換える際に、同時に解答も作成できるようにしたいです。

自分はプログラミング初心者なので、その方法は今のところ思いつきません。

どなたか詳しい方がいれば、ご教授ください。

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?