とらりもんHOME  Index  Search  Changes  Login

とらりもん - python入門: 演算 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

次に, pythonでいろいろな計算をやってみよう。

まず, $ ipython3というLinuxコマンドでpythonシェルを立ち上げ, その上で, 以下の命令を打ってみよう:
3+2
3-2
3*2
3/2
2+3*4
普通に, 5, 1, 6, 1.5, 14という答が帰ってくるだろう。+, -, *, /はそれぞれ加算, 減算, 乗算, 除算である。では以下の命令を打ってみよう:
2/3/4
(2/3)/4
2/(3/4)
2/3*4
(2/3)*4
2/(3*4)

[レポート課題4-1] これらの結果から, 以下を考察せよ:
# +と*が混在する計算はどのような順序で処理されるか?
#*と/が混在する計算はどのような順序で処理されるか?

では, pythonシェルで以下の命令をやってみよう:
6/(5/(4/3))
6/[5/(4/3)]
6/{5/(4/3)}

最初の命令は正しい答(1.6)を返してくるが, ほかの2つはエラーが出るだろう。なぜか? pythonでは, 数式の計算順を表す括弧は()だけである。[ ]や{ }は別の意味を表す括弧なので, 数式の計算順には使えないのだ。

では, pythonシェルで以下の命令をやってみよう:
3**2
10**4
2*3**4
(2*3)**4
2*(3**4)
3%2
10%4
4*5%3

[レポート課題4-2] 上で打った命令について,
# **と%はそれぞれどういう意味だろうか?
# *と**が混在する計算は, どのような順序で処理されるか?
# %と*が混在する計算は, どのような順序で処理されるか?

以上の課題で, pythonで簡単な数値計算をやる雰囲気がつかめただろう。大事なことは,
* 加減乗除は+, -, /, *という記号。
* 括弧()に囲まれた部分から先に計算される。
* 計算順を表す括弧は()だけ。[]や{}は使っちゃダメ!
* 括弧()が無い場合は, 加・減より乗・序の方が先に計算される。
* 括弧()が無い場合は, 乗・序は左から順に計算される。
* **はべき乗。
* %は剰余(割った余り)
* **や%が入ってくると, 計算の順序がややこしくなる。
* こういうややこしい計算順序は, 機械は覚えてても人間は覚えてられないので, できるだけ括弧を使って計算順序を明示しよう!

以上は数値の演算だったが, pythonでは「文字列の演算」もできる。pythonシェルで以下を打ってみよう:
x='apple'
y='juice'
x+y
x*3
ここで, xもyも文字列である。そして, x+yは, なんと, 'applejuice'になっているではないか! さらに, x*3は'appleappleapple'と, appleが3回繰り返されているではないか!

こうなると, appleとjuiceの間や, appleどうしの間にスペースも入れたくなってくる。それにはこうすればよい:
x+' '+y
(x+' ')*3

[レポート課題4-3] 以下を試して結果を解釈せよ(いくつかはエラーが出るだろう):
x+x
3*x
x*2.0
x/y
x/2


[レポート課題4-4] pythonシェルで以下の命令をやってみよ。
x=2
x
x+=3
x
x-=5x-=7
x
これらの結果から, +=や-=という操作の意味を考えよ。

(ブラウザの戻るボタンで戻って下さい)