割り算の余りが出ない場合
プログラムと言えば[+、-、×、÷]の四則演算が基本ですが、
割り算の計算の余りを求める[%]を利用します
例えば3回に1回処理を行いたい場合は
1 2 3 4 5 6 7 8 9 10 11 12 |
import time i = 1 while True: print(i) if i % 3 == 0: print("処理") time.sleep(1) i += 1 |
※ループなのでCtrl+Cで抜けてください
とします
%は割り算の余り(剰余)を出す算術演算子なので
1 ÷ 3 の時に 1 (0あまり1)
2 ÷ 3 の時に 2 (0あまり2)
3 ÷ 3 の時に 0 (1あまり0)
4 ÷ 3 の時に 1 (1あまり1)
5 ÷ 3 の時に 2 (1あまり2)
6 ÷ 3 の時に 0 (2あまり0)
7 ÷ 3 の時に 1 (2あまり1) …
2 ÷ 3 の時に 2 (0あまり2)
3 ÷ 3 の時に 0 (1あまり0)
4 ÷ 3 の時に 1 (1あまり1)
5 ÷ 3 の時に 2 (1あまり2)
6 ÷ 3 の時に 0 (2あまり0)
7 ÷ 3 の時に 1 (2あまり1) …
となっています
それを利用して[余りが出ずに割り算できるとき]にはこの処理を行う
という指定ができるようになります
面白いですよね
1÷3の時に1?と腑に落ちない方も多いと思います
義務教育を卒業した今の知識だと、
0.33333…と計算できてしまうので余りが出ること自体を
変に思うイメージがついている気がします
義務教育を卒業した今の知識だと、
0.33333…と計算できてしまうので余りが出ること自体を
変に思うイメージがついている気がします
小学生の時に小数点を覚える前だと納得しやすそうです
1つの物を3人で分ける
1つの物はバラバラに分割できない
なのでだれにも配れず1つ余る
2つの物を3人で分ける
2つの物はそれぞれバラバラに分割できない
なのでだれにも配れず2つ余る
平等に配れないのなら、その時点で分けるのを止める
こんなイメージだと納得しやすいのではないでしょうか
5回に一回の処理だと [i % 5 == 0]
1 ÷ 5 の時に1 (0あまり1)
2 ÷ 5 の時に2 (0あまり2)
3 ÷ 5 の時に3 (0あまり3)
4 ÷ 5 の時に4 (0あまり4)
5 ÷ 5 の時に0 (1あまり0)
6 ÷ 5 の時に1 (1あまり1)
7 ÷ 5 の時に2 (1あまり2) …
2 ÷ 5 の時に2 (0あまり2)
3 ÷ 5 の時に3 (0あまり3)
4 ÷ 5 の時に4 (0あまり4)
5 ÷ 5 の時に0 (1あまり0)
6 ÷ 5 の時に1 (1あまり1)
7 ÷ 5 の時に2 (1あまり2) …
10回に一回の処理だと [i % 10 == 0]、100回に一回の処理だと [i % 100 == 0]
と数字を変えるだけでOKです
・データ取得の10回に1回ログをコンソールに表示する
・time.sleep(1)をループしてる時に30秒に一回処理を行う
・データが100溜まるごとに処理を行う
等々使い道は色々あると思います
以上です