Вопрос об операторе по модулю (%) в Python 3 - PullRequest
0 голосов
/ 27 мая 2020

Я понимаю, что оператор по модулю (%) используется для получения остатка от деления, например:

7 % 3 = 1

Но почему 1 % 60 = 1, а не 0.084? (1 - 0.016)

Почему -1 % 60 = 59?

Должно быть что-то, чего я не понимаю в том, как работает этот оператор.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Давайте посмотрим на более общую функцию divmod, которая дает вам как частное, так и остаток:

divmod(n, m) == n // m, n % m

divmod подчиняется следующему закону (см. help(divmod)) для всех целых чисел n и m:

q, r = divmod(n, m) <==> m*q + r == n

Кроме того, m и r всегда имеют один и тот же знак, а 0 <= abs(r) < abs(m). Ни то, ни другое прямо не указано, но каждое следует из определения //.

0 голосов
/ 27 мая 2020

Действительно.

1 деленное на 60 равно 0, остаток равен 1. Остатки всегда являются целыми числами.

И 59 правильно, потому что -1 // 60 равно -1, и должно быть верно, что n == (n // делитель) * делитель + остаток, поэтому -1 * 60 + 59 == -1

...