Python 取模运算(取余)%误区及详解
首先,必须要先明确一个概念(针对新手),不要用数学求余数角度来思考模运算,python、Java等各种语言都有其不同的运行机制。
python的模运算计算规则:
r = a % b = a - [a//b]*b
#a//b为a/b向下取整,注意是向下取整(所以又称floor除、地板除),
#并不是直接取整,int()才是直接取整
看下面的例子:
>>>7%-3
-2 # 7//-3=-3 r=7-(-3)*(-3)=-2
>>>7%3
1 # 7//3=2 r=7-2*3=1
>>>7.5%2
1.5 # 7.5//2=3 r=7.5-2*3=1.5
>>>7.5%-2
-0.5 # 7.5//-2=-4 r=7.5-(-2)*(-4)=-0.5
怎么样?现在是不是清晰了很多。
接下来让我们看一下模运算常见的一个例子。
爱因斯坦曾出过这样一道有趣的数学题:
有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
for n in range(1,2000):
(print(n) if (n%2==1 and n%3==2 and n%5==4 and n%6==5 and n%7==0) else '')
#范围你自己随便给,我这里只搜索了2000以内
#我这里只是用了一个三元运算符,方法你自己选
到这里就结束了,如有问题可以在评论区交流(我也是初学者哦,一起加油!)