整数取余负数
技巧:先忽略负号,之后取余,和正常取余不同的是:被取余的数x一个数,不能比取余的数小(可以相等,这意味着任何一个整数取余-1结果都为0),之后用这个数减去取余的数,最后在得到的结果上加上负号;当被取余的负数取正后大于取余的数时,直接使用取正后的被取余的数减去取余的数,之后加上负号即为最终结果(e.g. 22取余-3,先将-3看作3,之后3x7=21,比22小,所以3x8=24,再用24-22=2,最后在得到的结果上加上负号得到最终结果为-2,即:22 % -3 = -2)
>>>print(22 % -2)
0
>>>print(22 % -3)
-2
>>>print(22 % -4)
-2
>>>print(22 % -5)
-3
>>>print(22 % -6)
-2
>>>print(22 % -10)
-8
>>>print(22 % -23)
-1
>>>print(22 % -24)
-2
>>>print(22 % -25)
-3
>>>print(22 % -26)
-4
负数取余整数
技巧:先忽略负号,之后取余,和正常取余不同的是:被取余的数x一个数,不能比取余的数小(可以相等,这意味着任何一个整数取余-1结果都为0),之后用这个数减去取余的数即为最终结果;当取余的负数取正后小于被取余的数时,直接使用被取余的数加上取余的负数,即为最终结果(e.g. -22取余3,先将-22看作22,之后3x7=21,比22小,所以3x8=24,再用24-22=2,最终结果即为2,即:-22 % 3 = 2)
>>>print(-22 % 2)
0
>>>print(-22 % 3)
2
>>>print(-22 % 4)
2
>>>print(-22 % 5)
3
>>>print(-22 % 6)
2
>>>print(-22 % 10)
8
>>>print(-22 % 23)
1
>>>print(-22 % 24)
2
>>>print(-22 % 25)
3
>>>print(-22 % 26)
4
负数取余负数
技巧:先忽略负号,之后正常取余,最后在取余结果中加上负号;当被取余的数的绝对值大于取余的数的绝对值时,结果恒为取余的数(不是它的绝对值哦!这意味着此时返回结果恒为一个负数)(e.g. -22取余-3,先将-3看作3将-22看作22,之后3x7=21,用22-21=1,最后添加负号得到-1,最终结果即为-1,即:-22 % -3 = -1)
>>>print(-22 % -2)
0
>>>print(-22 % -3)
-1
>>>print(-22 % -4)
-2
>>>print(-22 % -5)
-2
>>>print(-22 % -6)
-4
>>>print(-22 % -10)
-2
>>>print(-22 % -23)
-22
>>>print(-22 % -24)
-22
>>>print(-22 % -25)
-22
>>>print(-22 % -26)
-22
整数整除负数
技巧:先将负数看作正数,之后-(被整除的数x? >= 除数);当被整除的数的绝对值大于除数时,运算结果恒为-1(对被整除的数乘以哪个数大于等于除数 进行取负)(e.g. 25 // -4,先将-4看作4,之后4x哪个数大于25?答案是7,最后将结果取负,得到最终结果为-7,即:25 // -4 = -7)
>>>print(25 // -2)
-13
>>>print(25 // -3)
-9
>>>print(25 // -4)
-7
>>>print(25 // -5)
-5
>>>print(25 // -6)
-5
>>>print(25 // -10)
-3
>>>print(25 // -26)
-1
>>>print(25 // -27)
-1
>>>print(25 // -28)
-1
>>>print(25 // -29)
-1
负数整除整数
技巧:先将负数看作正数,之后-(被整除的数x? >= 除数的绝对值)(对被整除的数乘以哪个数大于等于除数的绝对值 进行取负);当除数的绝对值大于被整除的数时,运算结果恒为-1(e.g. -25 // 4,先将-25看作25,之后4x哪个数大于25?答案是7,最后将结果取负,得到最终结果为-7,即:-25 // 4 = -7)
>>>print(-25 // 2)
-13
>>>print(-25 // 3)
-9
>>>print(-25 // 4)
-7
>>>print(-25 // 5)
-5
>>>print(-25 // 6)
-5
>>>print(-25 // 10)
-3
>>>print(-25 // 26)
-1
>>>print(-25 // 27)
-1
>>>print(-25 // 28)
-1
>>>print(-25 // 29)
-1
负数整除负数
技巧:忽略符号,之后正常整除即可,最终结果无需添加负号;当被整除的数的绝对值大于除数的绝对值时,结果恒为0(e.g. -25 // -3,先将-25看作25将-3看作3,之后25 // 3 = 8,最终结果就是8,即:-25 // -3 = 8)
>>>print(-25 // -2)
12
>>>print(-25 // -3)
8
>>>print(-25 // -4)
6
>>>print(-25 // -5)
5
>>>print(-25 // -6)
4
>>>print(-25 // -10)
2
>>>print(-25 // -26)
0
>>>print(-25 // -27)
0
>>>print(-25 // -28)
0
>>>print(-25 // -29)
0
特殊的值
1:
符号左边:
取余:符号右边的数为正时,结果恒为1;符号右边的数为负时,结果恒为符号右边的数 + 1
// 取余-符号右边的数为正时
>>>print(1 % 22)
1
>>>print(1 % 25)
1
>>>print(1 % 30)
1
>>>print(1 % 50)
1
>>>print(1 % 91)
1
// 取余-符号右边的数为负时
>>>print(1 % -22)
-21
>>>print(1 % -25)
-24
>>>print(1 % -30)
-29
>>>print(1 % -50)
-49
>>>print(1 % -91)
-90
整除:符号右边的数为正时,结果恒为0;符号右边的数为负时,结果恒为-1
// 整除-符号右边的数为正时
>>>print(1 // 22)
0
>>>print(1 // 25)
0
>>>print(1 // 30)
0
>>>print(1 // 50)
0
>>>print(1 // 91)
0
// 整除-符号右边的数为负时
>>>print(1 // -22)
-1
>>>print(1 // -25)
-1
>>>print(1 // -30)
-1
>>>print(1 // -50)
-1
>>>print(1 // -91)
-1
符号右边:
取余:结果恒为0
// 取余
>>>print(22 % 1)
0
>>>print(25 % 1)
0
>>>print(30 % 1)
0
>>>print(-30 % 1)
0
>>>print(-50 % 1)
0
>>>print(-91 % 1)
0
整除:结果恒为符号左边的数取反
// 整除
>>>print(22 // 1)
22
>>>print(25 // 1)
25
>>>print(30 // 1)
30
>>>print(-30 // 1)
-30
>>>print(-50 // 1)
-50
>>>print(-91 // 1)
-91
-1:
符号左边:
取余:符号右边的数为正数时,结果恒为符号右边的数 + -1;当符号右边的数为负数时,结果恒为-1
// 取余
>>>print(-1 % 22)
21
>>>print(-1 % 25)
24
>>>print(-1 % 30)
29
>>>print(-1 % -30)
-1
>>>print(-1 % -50)
-1
>>>print(-1 % -91)
-1
整除:符号右边的数为正数时,结果恒为-1;当符号右边的数为负数时,结果恒为0
// 整除
>>>print(-1 // 22)
-1
>>>print(-1 // 25)
-1
>>>print(-1 // 30)
-1
>>>print(-1 // -30)
0
>>>print(-1 // -50)
0
>>>print(-1 // -91)
0
符号右边:
取余:结果恒为0
// 取余
>>>print(22 % -1)
0
>>>print(23 % -1)
0
>>>print(58 % -1)
0
>>>print(-22 % -1)
0
>>>print(-23 % -1)
0
>>>print(-58 % -1)
0
整除:结果恒为符号左边的数取反
// 整除
>>>print(22 // -1)
-22
>>>print(23 // -1)
-23
>>>print(58 // -1)
-58
>>>print(-22 // -1)
22
>>>print(-23 // -1)
23
>>>print(-58 // -1)
58
0:
0不能出现在符号右边,当符号左边为0时,结果恒为0
// 0出现在符号右边会报错
>>>print(22 // 0)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
22 // 0
ZeroDivisionError: integer division or modulo by zero
>>>print(22 % 0)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
22 % 0
ZeroDivisionError: integer division or modulo by zero
// 符号左边为0的情况
// 整除
>>>print(0 // 22)
0
>>>print(0 // 34)
0
>>>print(0 // 98)
0
// 取余
>>>print(0 % 22)
0
>>>print(0 % 34)
0
>>>print(0 % 98)
0
俩个数相等时:
负号在符号左边:
取余:结果恒为0
>>>print(-22 % 22)
0
>>>print(-34 % 34)
0
>>>print(-79 % 79)
0
>>>print(-13 % 13)
0
>>>print(-25 % 25)
0
>>>print(-30 % 30)
0
整除:结果恒为-1
>>>print(-22 // 22)
-1
>>>print(-34 // 34)
-1
>>>print(-79 // 79)
-1
>>>print(-13 // 13)
-1
>>>print(-25 // 25)
-1
>>>print(-30 // 30)
-1
负号在符号右边:
取余:结果恒为0
>>>print(22 % -22)
0
>>>print(34 % -34)
0
>>>print(79 % -79)
0
>>>print(13 % -13)
0
>>>print(25 % -25)
0
>>>print(30 % -30)
0
整除:结果恒为-1
>>>print(22 // -22)
-1
>>>print(34 // -34)
-1
>>>print(79 // -79)
-1
>>>print(13 // -13)
-1
>>>print(25 // -25)
-1
>>>print(30 // -30)
-1
左右俩边都为负时:
取余:结果恒为0
>>>print(-22 % -22)
0
>>>print(-34 % -34)
0
>>>print(-79 % -79)
0
>>>print(-13 % -13)
0
>>>print(-25 % -25)
0
>>>print(-30 % -30)
0
整除:结果恒为1
>>>print(-22 // -22)
1
>>>print(-34 // -34)
1
>>>print(-79 // -79)
1
>>>print(-13 // -13)
1
>>>print(-25 // -25)
1
>>>print(-30 // -30)
1