Python中的数学比率

Python中的数学比率,python,math,Python,Math,我在一年前写过这篇文章,虽然它达到了它的目的,但我想知道是否有比我聪明得多的人能提出提高效率的方法 def tempcolor(mintemp=0,maxtemp=32,mincolor=44000,maxcolor=3200,ctemp=10,c=0): tempdiff=(mincolor-maxcolor) / (maxtemp-mintemp) ccolor=(ctemp-mintemp) * tempdiff ctouse=(mincolor-ccolor)

我在一年前写过这篇文章,虽然它达到了它的目的,但我想知道是否有比我聪明得多的人能提出提高效率的方法

def tempcolor(mintemp=0,maxtemp=32,mincolor=44000,maxcolor=3200,ctemp=10,c=0):
    tempdiff=(mincolor-maxcolor) / (maxtemp-mintemp)
    ccolor=(ctemp-mintemp) * tempdiff
    ctouse=(mincolor-ccolor)
    #print ctouse
    return ctouse;
有一个数字范围(mintemp到maxtemp)。调用ctouse时,我们计算比率,然后将相同的比率应用于其他数字范围(mincolor和maxcolor)

我正在另一个脚本中使用它,只是想知道是否有人对它的整洁有什么建议。或者更准确

谢谢


Will

我假设您很少或永远不会更改mintemp、maxtep、mincolor、maxcolor的给定值

我所能看到的唯一的效率改进就是预先计算出这个比率——比如

def make_linear_interpolator(x0, x1, y0, y1):
    """
    Return a function to convert x in (x0..x1) to y in (y0..y1)
    """
    dy_dx = (y1 - y0) / float(x1 - x0)
    def y(x):
        return y0 + (x - x0) * dy_dx
    return y

color_to_temp = make_linear_interpolator(0, 32, 44000, 3200)

color_to_temp(10)    # => 32150.0

如果您的代码已经在运行,并且您希望使其更高效或更美观,请尝试询问您是否应该在第一次使用浮点计算时采用该比率。这取决于您的Python版本,等等,但请确保您使用浮点进行计算。你能举一个例子说明结果不够准确。你确定这个关系实际上是线性的吗?你用的是什么单位?把32当作温度让我觉得可能是华氏温度。颜色是用什么单位测量的?开尔文?谢谢大家的帮助,并为这样一个愚蠢的问题道歉-我想,如果有什么的话,我很欣慰,它是有效的,不能真正改善…虽然休的选择可能是更好的!