Categories: Python

【Python】あまり(剰余)を取得する方法

この記事では、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
【Python】配列の要素を展開して変数に代入する方法を解説【アンパック】この記事では、Pythonのアンパックについて解説します。アンパックとは、配列の要素を展開し、変数に代入することを言います。また、関数の引数としてリストや辞書を展開して渡すこともでき、とても便利です。それでは、アンパックの使い方を見ていきましょう!...

あまりを使ったコード

それでは、実際にあまりを用いたコードを見ていきましょう!

奇遇を判別する

奇遇を判別するには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秒

まとめ

この記事では、あまりの求め方と具体的な使用例を見てきました。

普段あんまり馴染みのない「あまり」ですが意外といろんなことができるんですね。プログラミングの世界ではけっこう使うので覚えておきましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago