Python中的模块加法

mgdq6dx1  于 2023-05-16  发布在  Python
关注(0)|答案(8)|浏览(201)

我想给x加上一个数y,但是x要在0和48之间。注意,y可以是负的,但永远不会有大于48的幅度。有没有更好的方法来做到这一点,而不是:

x = x + y
if x >= 48:
    x = x - 48
elif x < 0:
    x = x + 48

bfrts1fy

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
j8yoct9x

j8yoct9x2#

如果你在做模运算,你只需要使用模运算符。

x = (x + y) % 48
ubof19bj

ubof19bj3#

(x+ y)% 48不适合你。查看更多关于modulo here的信息。

qnyhuwrf

qnyhuwrf4#

你可以使用modulo operator:

x = (x+y) % 48
qkf9rpyu

qkf9rpyu5#

你可以用

x = (x+y) % 48

这会给予你正的x

lymgl2op

lymgl2op6#

(x + y)% 48
第48章随便你怎么说

wdebmtf2

wdebmtf27#

你也可以创建一个类来处理模运算,就像这里所做的那样:http://anh.cs.luc.edu/331/code/mod_arith.py
http://anh.cs.luc.edu/331/code/mod.py

hiz5n14c

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"

相关问题