python入門: 4. 演算
次に, pythonでいろいろな計算をやってみよう。pythonシェル(Google Colaboratoryやjupyter notebookでもよい)を立ち上げ, その上で, 以下の命令を打ってみよう:
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-=7 x
これらの結果から, +=や-=という操作の意味を考えよ。
(ブラウザの戻るボタンで戻って下さい)
Keyword(s):
References:[python入門]