Python 3 中的映射值

mapping value in Python 3

def valMap(x, in_min, in_max, out_min, out_max):
    return ((x - in_min) * (out_max - out_min)) // (in_max - in_min) + out_min


def limit(self, input):

    if -0.2 <= input <= 0.2:
        input = 192
    if input < -0.2:
        input = valMap(input, -0.2, -1, 138, 192)
    if input > 0.2:
        input = valMap(input, 0.2, 1, 192, 242)
    return input

输入值的范围是 -1 到 +1 浮点数。 这仅在最后一个 if 语句中按预期工作。 所有其他 if 语句都会抛出奇怪的数字。

这在 Python2 中确实有效。

谢谢

这看起来与 Python 版本没有任何关系。你确定你的 if 条件是依赖的吗?据我所知,您在最后一个 if 语句中再次调用 valMap 函数,具体取决于第一个函数调用的结果。您是想改用 elif 吗?