この記事では、Pythonであまり(剰余)を求める方法を解説します。
Pythonでは、%
演算子を使うことで簡単にあまりを求めることができます。あまりを使うことで奇遇を判別したり、時間を秒から分に変換することができます。
それでは、あまりの求め方と簡単な利用方法を見ていきましょう!
あまりを求めるには%
演算子を使います。
あまり = 値1 % 値2
試しにあまりを求めてみます。
r = 7 % 2 # 1
r = 7 % 3 # 1
r = 7 % 4 # 3
r = 7 % 5 # 2
浮動小数点数のあまりも計算することができます。
r = 7 % 2.5 # 2.0
r = 7 % 3.1 # 0.7999999999999998
r = 7 % 4.6 # 2.4000000000000004
r = 7 % 5.8 # 1.2000000000000002
ブレが生じやすいので注意。ブレを発生させたくない場合はDecimal
を使います。
from decimal import Decimal
r = 7 % Decimal('2.5') # 2.0
r = 7 % Decimal('3.1') # 0.8
r = 7 % Decimal('4.6') # 2.4
r = 7 % Decimal('5.8') # 1.2
divmod()
関数を使うことで商とあまりを同時に取得できる。
r = divmod(7, 2)
print(r)
実行結果
(3, 1)
タプルではなくバラバラに値を受け取りたい場合は、アンパックすると楽ちん。
q, r = divmod(7, 2)
print(q)
print(r)
実行結果
3
1
それでは、実際にあまりを用いたコードを見ていきましょう!
奇遇を判別するには2で割ったあまりが0かどうかで判別することができます。
num = 1
# 2で割ったあまりを求める
r = num % 2
print(f'あまり: {r}')
# あまりが0と等しければ偶数
print(f'2で割り切れる: {r == 0}')
実行結果
あまり: 1
2で割り切れる: False
もっとコンパクトに1行で記述することもできます。
num = 1
s = num % 2 == 0
print(f'2で割り切れる: {s}')
実行結果
2で割り切れる: False
あとはif文と組み合わせるだけで奇遇を判別できます。
num = 1
if num % 2 == 0:
print(f'numは偶数')
else:
print('numは奇数')
実行結果
numは奇数
数値型をif文に使用した際、0がFalse、それ以外の値がTrueとなる性質を利用することで比較せずとも奇遇を判別することができます。
num = 1
# あまりが出れば奇数
if num % 2:
print('numは奇数')
# あまりがなければ偶数
else:
print(f'numは偶数')
実行結果
numは奇数
秒で記述された時間を分にしたい場合、あまりを使うことで60で割り切れない場合も変換することができます。
# 秒で表記された時間
time = 150
# 分
minute = time // 60
# 秒
second = time % 60
print(f'{minute}分{second}秒')
実行結果
2分30秒
この記事では、あまりの求め方と具体的な使用例を見てきました。
普段あんまり馴染みのない「あまり」ですが意外といろんなことができるんですね。プログラミングの世界ではけっこう使うので覚えておきましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ