gpt4 book ai didi

python - 如何使用取模运算符在两个常量之间绑定(bind)一个数字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:50 26 4
gpt4 key购买 nike

def boundThis(x):
min = 20
max= 100
boundX = int(x)
if (boundX > max):
boundX = boundX % max + min-1
if (boundX > max):
boundX-=max-1
else:
while(boundX < min):
boundX += max-min
return boundX

我试图将 x 限制在两个数字 20 和 100(不包括)之间。也就是说,一旦它达到 100,它应该循环回到 20。

我知道它是如何与 while 循环一起工作的(while boundX < min),但是我在使用 modulus 运算符并用它编写正确的表达式时遇到了问题。

例。 boundThis(201) 应该给我 21,而 boundThis(100) 应该给我 20。

最佳答案

请注意 minmax 已经是内置函数,所以不要用这些标识符命名变量,因为你不能做类似下面的事情(假设你不尝试生成指定范围内的数字列表):

>>> def bound(low, high, value):
... return max(low, min(high, value))
...
>>> bound(20, 100, 1000)
100
>>> bound(20, 100, 10)
20
>>> bound(20, 100, 60)
60

编辑:

对于环绕条件,将其视为一个数学问题。如您所知,模数运算符本质上是找到对除数进行除法运算后剩下的余数,因此我们可以使用它。因此,如果您的偏移量为 0n,则基本情况非​​常简单。

>>> 99 % 100
99
>>> 101 % 100
1

但您希望它偏离某个基值 (low),因此您必须应用基础数学并将该问题简化为上述问题。我建议您在阅读下面的解决方案之前尝试自己解决这个问题。

>>> def bound(value, low=20, high=100):
... diff = high - low
... return (((value - low) % diff) + low)
...
>>> bound(0)
80
>>> bound(19)
99
>>> bound(20)
20
>>> bound(100)
20
>>> bound(99)
99

关于python - 如何使用取模运算符在两个常量之间绑定(bind)一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com