とらりもんHOME  Index  Search  Changes  Login

python入門: 4. 演算

次に, 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] これらの結果から, 以下を考察せよ:

  1. +と*が混在する計算はどのような順序で処理されるか?
  2. *と/が混在する計算はどのような順序で処理されるか?

では, 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] 上で打った命令について,

  1. **と%はそれぞれどういう意味だろうか?
  2. *と**が混在する計算は, どのような順序で処理されるか?
  3. %と*が混在する計算は, どのような順序で処理されるか?

以上の課題で, 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-=7
x 

これらの結果から, +=や-=という操作の意味を考えよ。

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

Last modified:2020/01/16 12:01:17
Keyword(s):
References:[python入門]