Python中对负数的整除和取余及特值情况

整数取余负数

技巧:先忽略负号,之后取余,和正常取余不同的是:被取余的数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
  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python的除法运算符有两种形式:/ 和 //。其,/ 是普通的除法运算符,返回的是浮点数结果;// 是整除运算符,返回的是整数结果。\[1\] 对于负数整除Python的规则是永远向下取整,即返回小于等于当前小数的最大整数。例如,-7 // 2 的结果是 -4,而不是 -3.5。\[1\] 取余运算符在Python用 % 表示。对于负数取余Python的规则是保持余数的符号与被除数一致。例如,-7 % 2 的结果是 1,而不是 -1。\[1\] 在LeetCode刷题,如果题目要求返回整数结果,需要使用整除运算符 // 和 int() 函数来确保结果是整数。例如,对于题目 https://leetcode-cn.com/problems/xoh6Oh/submissions/ ,可以使用以下代码来返回整数结果:\[1\] ```python class Solution: def divide(self, a: int, b: int) -> int: if(a == -2147483648 and b == -1): return 2147483647 return int(a / b) ``` 在引用\[2\]的代码,使用了取余运算符 % 来判断一个数在不同的范围内,并输出对应的季节。例如,对于输入的数 n,如果满足 3 <= n % 100000 % 1000 % 100 <= 5,则输出 'spring'。类似地,根据不同的取余结果,输出对应的季节。\[2\] 在引用\[3\]的代码,使用了 while 循环和取余运算符 % 来计算1-100之间的偶数和。首先,设定一个变量 num 为 0,然后使用 while 循环遍历 1 到 100 的数。如果当前数 a 是偶数(即 a % 2 == 0),则将其加到 num 上。最后输出 num 的值,即为1-100之间的偶数和。\[3\] 总结起来,Python的除法运算符有两种形式:/ 和 //,取余运算符用 % 表示。对于负数整除Python的规则是向下取整,取余运算符的结果与被除数的符号一致。在LeetCode刷题,如果要返回整数结果,可以使用整除运算符 // 和 int() 函数。\[1\] #### 引用[.reference_title] - *1* [Python负数整除取余](https://blog.csdn.net/qq_43601378/article/details/125273791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【关于python整除取余】](https://blog.csdn.net/m0_64572434/article/details/123664090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

娄不夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值