有没有一种简单的方法可以在python中在有限的数字空间内进行数字运算?

问题描述 投票:0回答:1

我想知道是否有一种简单的方法可以在有限的数字空间(例如0和40或0和1000)中计算数字方程?如果有办法让数字返回就更好了。例如,有一个介于 0 和 8 之间的数字空间。然后执行运算 4 + 7,这将等于 11(超过 8),然后该数字将返回到 5,因为 4 + 4 将是 8 并且因为仍然有3(7 - 4 = 3) 的余数等于 8 - 3,即 5。反之亦然,减法在 0 到 8 的数字空间中 3 - 4 等于 1。

我尝试做一堆 if,但停止了,因为它使代码有点复杂。

python numbers
1个回答
0
投票

它是周期性的,周期是您空间大小的两倍。例如,对于从 0 到 8 的空格,添加 16 或 32 或 48 等不会产生任何效果。因此使用两倍大小的模。那么你最多会从墙上撞上一个,我用

min
处理了它。为了支持非零下端,请通过将下端移至零并返回来围绕实际计算。

def add(a, b, lo, hi):
    m = 2 * (hi-lo)
    s = (a-lo+b) % m
    return min(s, m-s) + lo

def sub(a, b, lo, hi):
    return add(a, -b, lo, hi)

print(add(4, 7, 0, 8))
print(sub(3, 4, 0, 8))

输出(在线尝试!):

5
1
© www.soinside.com 2019 - 2024. All rights reserved.