我想给x加上一个数y,但是x要在0和48之间。注意,y可以是负的,但永远不会有大于48的幅度。有没有更好的方法来做到这一点,而不是:
x = x + y if x >= 48: x = x - 48 elif x < 0: x = x + 48
?
bfrts1fy1#
x = (x + y) % 48
模运算符是你的朋友。
>>> 48 % 48 0: 0 >>> 49 % 48 1: 1 >>> -1 % 48 2: 47 >>> -12 % 48 3: 36 >>> 0 % 48 4: 0 >>> 12 % 48 5: 12
j8yoct9x2#
如果你在做模运算,你只需要使用模运算符。
ubof19bj3#
(x+ y)% 48不适合你。查看更多关于modulo here的信息。
(x+ y)% 48
qnyhuwrf4#
你可以使用modulo operator:
x = (x+y) % 48
qkf9rpyu5#
你可以用
这会给予你正的x。
x
lymgl2op6#
(x + y)% 48第48章随便你怎么说
wdebmtf27#
你也可以创建一个类来处理模运算,就像这里所做的那样:http://anh.cs.luc.edu/331/code/mod_arith.pyhttp://anh.cs.luc.edu/331/code/mod.py
hiz5n14c8#
你可能需要除法的结果,除了余数模n,所以这里有一个秒到年+天+等的转换器,它演示了divmod函数。当然,人们可以继续使用lustrum,decades,scores,世纪,或者使用fortnight等。;)
nsec = 1989550000 mnt2sec = 60; hrs2mnt=60; day2hrs=24; yrs2day=365 mnt, dus = divmod(nsec, mnt2sec) hrs, dum = divmod(mnt, hrs2mnt) dys, duh = divmod(hrs, day2hrs) yrs, dud = divmod(dys, yrs2day) print(f'{nsec} s = {yrs} y, {dud} d, {duh} h, {dum} m, {dus} s') # check asec = (dus+mnt2sec*(dum+hrs2mnt*(duh+day2hrs*(dud+yrs*yrs2day)))) assert asec == nsec, "wrong sum rule"
8条答案
按热度按时间bfrts1fy1#
模运算符是你的朋友。
j8yoct9x2#
如果你在做模运算,你只需要使用模运算符。
ubof19bj3#
(x+ y)% 48
不适合你。查看更多关于modulo here的信息。qnyhuwrf4#
你可以使用modulo operator:
qkf9rpyu5#
你可以用
这会给予你正的
x
。lymgl2op6#
(x + y)% 48
第48章随便你怎么说
wdebmtf27#
你也可以创建一个类来处理模运算,就像这里所做的那样:http://anh.cs.luc.edu/331/code/mod_arith.py
http://anh.cs.luc.edu/331/code/mod.py
hiz5n14c8#
你可能需要除法的结果,除了余数模n,所以这里有一个秒到年+天+等的转换器,它演示了divmod函数。当然,人们可以继续使用lustrum,decades,scores,世纪,或者使用fortnight等。;)