2. 数と演算

2-1. 数
 数には、1、150、2048などの数(整数)と、0.1、1.125、123.456などの数(小数部を持つ数、実数、浮動小数点数)があります。Pythonが処理できる整数の最大値は、基本的に限度がありません。小数点以下の桁数については、多くの場合15~16桁まで正確に処理できる場合が多いです(小数第17~18位を四捨五入し16~17位表示)。それでは100桁の整数と小数点以下が100桁の数をprint関数でいくつまでの数値として表示できるか確かめてみましょう。

▽サンプルプログラム2-1. 100桁の整数と小数以下100桁の数の処理

print(1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)
print(0.1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)
▼プログラミングセル2-1. packages = [] terminal = false

2-2. 数値演算
 Pythonには、整数や実数などを入力した数値を計算する演算子として以下の7つがあります。なお、整数除算とは割り算の整数部のことです。+や-が演算子であり、演算子の前後にくる要素を被演算子(オペランド)と呼びます。オペランドなどに設定される値のことをリテラルと呼びます。

演算子算術
+足し算
-引き算
*掛け算
/割り算
//整数除算
%割り算の余り
**べき乗

▽サンプルプログラム2-2. 数の演算

print(10+3)
print(10-3)
print(10*3)
print(10/3)
print(10//3)
print(10%3)
print(10**3)
▼プログラミングセル2-2.

※演算子と数値の間に半角スペースが存在しても可。演算子の中に半角スペースがあるとエラー(例、**を* *など)。

2-3. 数値と変数
 変数はデータを格納する箱のようなものです。簡単なイメージではその認識でよいのですが、実際にはデータを格納している場所情報(アドレス)が箱の中に入っています。変数にデータを格納するには演算子=を用いてa=10のような形で使用し、右から左に代入されます。

▽サンプルプログラム2-3. 変数への数値の代入

a = 10
print(a)
a = 10
b = 20
print(a,b)
a = 10
b = 20
print(a+b)
a = 10
print(a+3)
a = 10
b = 20
c = 33.3
print(a+b+c)
▼プログラミングセル2-3.

2-4. 変数の順番の注意
 Pythonはプログラムの上から順番に実行されるので、変数を利用する順番には注意が必要です。定義される前に利用しようとするとエラーになるので注意しましょう。

▽サンプルプログラム2-4. 変数の順番の注意

print(a) # エラー
a = 10
▼プログラミングセル2-4.

 ただし、本サイトのような対話モードの場合、変数を定義する場所が変数を利用する位置より下だとしても、プログラムセルが異なっていて先に実行することができれば、利用する位置より下でも大丈夫です。
※複数のプログラムセルで同じ変数名を利用していた場合、前のプログラムセルの変数の中身を参照している場合があるので注意しましょう。

▽サンプルプログラム2-5a. 変数の順番の注意
print(a) # 先に下の2-5bを実行しておけばエラーにならない
▼プログラミングセル2-5a.
▽サンプルプログラム2-5b. 変数の順番の注意
a = 10 # 先にこちらを実行しておけば上の2-5aはエラーにならない
▼プログラミングセル2-5b.

2-6. 演算の短縮表現
 a=a+1などの式はa+=1のような形に短縮して記述できます。演算の短縮表現の一覧は次のようになります。

短縮表現記述例通常表記
+=a+=ba=a+b
-=a-=ba=a-b
*=a*=ba=a*b
/=a/=ba=a/b
//=a//=ba=a//b
%=a%=ba=a%b
**=a**=ba=a**b

▽サンプルプログラム2-6. 演算の短縮表現

a=10
a+=3
print(a)
a=10
a-=3
print(a)
a=10
a*=3
print(a)
a=10
a/=3
print(a)
a=10
a//=3
print(a)
a=10
a%=3
print(a)
a=10
a**=3
print(a)
▼プログラミングセル2-6.

2-7. 数値の型
 数値の型は、整数の型であるint型と、浮動小数点数の型であるfloat型の2つがあります。Pythonのfloat型はC言語のdouble型と同じものになります(C言語のfloat型とは異なるので名前が同じでも注意してください)。それではtype関数を使って確認してみましょう。

▽サンプルプログラム2-7. int型とfloat型

print(type(10))
print(type(1.23))
print(type(10+3))
print(type(10-3))
print(type(10*3))
print(type(10/3))
print(type(10//3))
print(type(10%3))
print(type(10**3))
print(type(9/3))
▼プログラミングセル2-7.

2-8. 型の変換
 数値の型は、int関数とfloat関数を使って変換することができます。整数の数値をfloat型に変換した場合、整数値に.0が付く点に注意してください。

▽サンプルプログラム2-8. 型の変換

a=float(10)
print(a)
print(type(a))
a=int(1.23)
print(a)
print(type(a))
▼プログラミングセル2-8.

2-9. 演算子の優先順位
 算術演算子を含め、主な演算子の優先順位の一覧表を紹介します。以下の表では、優先順位の最も高い (結合が最も強い) ものから最も低い (結合が最も弱い) ものに並べてあります。同じセル内の演算子の優先順位は同じです。同じボックス内の演算子は、左から右へとグループ化されます (例外として、べき乗および条件式は右から左にグループ化されます)。

演算子説明
( ), [ ], {key: value }, { }結合式または括弧式、リスト表示、辞書表示、集合表示
x[i], x[i:j], x(***), x.***添字指定、スライス操作、呼び出し、属性参照
await xAwait式 ※コルーチン関数内で使う特殊な式
+x, -x, ~x正数、負数、ビット単位 NOT
*, @, /, //, %乗算、行列乗算、除算、切り捨て除算、剰余
+, -加算および減算
<<, >>シフト演算
&ビット単位 AND
^ビット単位 XOR
|ビット単位 OR
in, not in, is, is not, <, <=, >, >=, !=, ==所属や同一性のテストを含む比較
not xブール演算 NOT
andブール演算 AND
orブール演算 OR
if -- else条件式
lambdaラムダ式
:=代入式
※Python3.12.0ドキュメンテーション>>リファレンス>>6.17.演算子の優先順位(https://docs.python.org/ja/3/reference/expressions.html#operator-precedence)より一部改変

問題
 以下の問題に解答しましょう。

  1. Pythonで正確に処理できる整数の限度として最も適切なものを1つ選んでください。
  2. 8ビット、15~16桁、小数第17~18位、限度はない
  3. 割り算の余りを求める演算子を1つ選んだください。
  4. /, //, %, **
  5. 以下の計算を行うプログラムを記述してください。
    1. (1+2)×3
    2. 100÷2.7
    3. 10÷0
    4. 100を7で割った商をもとめる
    5. 自身の身長(m)を二乗し22をかける
    ▼プログラミングセル
  6. 以下の計算式の短縮形を記述してください。
    1. a=a+1
    2. b=b-2
    3. c=c*3
    4. d=d/4
    5. e=e//5
    6. f=f%6
    7. g=g**7
  7. 複数人の身長を調べて、身長データを格納する変数を個別に用意しましょう。用意した変数を使って身長の平均値を求めるプログラムを記述してください。
  8. ▼プログラミングセル