Pythonはオブジェクト指向の言語です。整数の値は整数クラスのインスタンスになります。下の例は単純に足し算をしているコードです。
# File: intsample.py
i=1
k=2
print(i+k)PythonはRubyなどと同様に整数に32bitや64bitの制限などはなく、すべて整数クラスの計算として扱われ、扱える最大値や最小値はありません(利用可能なメモリ量に依存)。計算順位も四則演算の順序通り乗算・除算が加算・減算よりも優先されます。しかし、計算の優先順位に対する可読性を良くするために、コードを書くときにはカッコ ‘(’ ’)’で括り計算を明確に表現することを推奨します。
下記のコードは加算(+)、減算(-)、乗算(*)、除算(/)、余剰(%)のプログラム例です。
i=111111111111111111111111111111111111111111111111111111111111111111111
k=222222222222222222222222222222222222222222222222222222222222222222222
l=3333333333333333333333333333333
print("i+k",i+k)
print("i-k",i-k)
print("i*k",i*k)
print("i/k",i/k)
print("i%l",i%l)
print("(i+k)%l",(i+k)%l)
print("(i-k)%l",(i-k)%l)関数print()はカンマ(,)で複数の出力を指定することができます。出力時には各出力の間に1文字分の空白が入ります。
Pythonでは下記のコードの値は暗黙のうちに浮動小数点に拡張され、答えは1.0になります。自動的に浮動小数点に拡張されるわけですが、直感的には整数クラス同士の計算で 1/3 を計算しているので、整数の0になるように思えますが浮動小数点に拡張します。さらに0.999…ではなく1.0を返します。このような浮動小数点クラスに拡張して計算し1.0で答えを返すのか、浮動小数点クラスに拡張するが0.999…と返すのか、それとも整数クラスで計算し0を返すのか言語によって異なります。たとえばRubyで計算すると0となりますし、UNIXコマンドの数値計算コマンドbc (-lオプション)を使って計算すると0.999…となります。
Pythonコードの例
print("(1/3)*3",(1/3)*3) # 1.0Rubyコードの例
puts (1/3)*3 # 0UNIXコマンドbcの例
$ echo '( 1 / 3 ) * 3' | bc -l
.99999999999999999999