一致性。
您需要遵循一些非常基本且看似不相关的解释才能理解它。
在学校你学过除以余数。而且你已经做了这样的计算:
8 ÷ 4 = 2 R 0
7 ÷ 4 = 1 R 3
6 ÷ 4 = 1 R 2
5 ÷ 4 = 1 R 1
4 ÷ 4 = 1 R 0
3 ÷ 4 = 0 R 3
2 ÷ 4 = 0 R 2
1 ÷ 4 = 0 R 1
0 ÷ 4 = 0 R 0
^------ This is the result of x // 4
^-- This is the result of x % 4 (modulo)
稍后,您学习了实数的除法:
8 ÷ 4 = 2.0
7 ÷ 4 = 1.75
6 ÷ 4 = 1.5
5 ÷ 4 = 1.25
4 ÷ 4 = 1.0
3 ÷ 4 = 0.75
2 ÷ 4 = 0.5
1 ÷ 4 = 0.25
0 ÷ 4 = 0.0
^--- Note that the number in front of the . is int(x/4)
到目前为止,您可能认为x // 4 和int(x/4) 总是给出相同的结果。这是你目前对情况的理解。
但是,看看整数除法中发生了什么:R 后面的数字从 3、2、1 循环到 0,然后重新开始:3、2、1、0。R 前面的数字每 4 次递减一步。
那么,接下来会怎样呢?
8 ÷ 4 = 2 R 0
7 ÷ 4 = 1 R 3
6 ÷ 4 = 1 R 2
5 ÷ 4 = 1 R 1
4 ÷ 4 = 1 R 0
3 ÷ 4 = 0 R 3
2 ÷ 4 = 0 R 2
1 ÷ 4 = 0 R 1
0 ÷ 4 = 0 R 0
-1 ÷ 4 = -1 R 3
^------ We have to decrease now, because we already have 0 four times
^-- We have to restart the cycle at 3
同时,实数除法给了我们:
-1 ÷ 4 = -0.25
^----- There is still a 0 in front of the .
这就是为什么-1 // 4 给出-1 而int(-1/4) 给出0。
功能之间的差异有什么动机吗?
好吧,它们有不同的用途:// 是带余数的整数计算的一部分,int() 为您提供实数运算的. 前面的部分。
您决定要计算什么,然后决定在 Python 中使用哪个运算符来获得正确的结果。
好问题。继续学习。