Python 梯度生成误差

Python 梯度生成误差,python,Python,我在这个脚本的某个地方有一个错误,它应该生成一个渐变。当深度等于差值时,梯度是完美的,但浮点增量似乎会把它搞砸。我盯着这个代码看了这么久,看不出答案 这个代码怎么了 def interpolate(s, e, n): start = list(s) end = list(e) incrementlst = [] for i in range(0,len(start)): diff = int(end[i]) - int(start[i]) if diff == 0:

我在这个脚本的某个地方有一个错误,它应该生成一个渐变。当深度等于差值时,梯度是完美的,但浮点增量似乎会把它搞砸。我盯着这个代码看了这么久,看不出答案

这个代码怎么了

def interpolate(s, e, n):

start = list(s)
end = list(e)
incrementlst = []

for i in range(0,len(start)):
    diff = int(end[i]) - int(start[i])
    if diff == 0:
        increment = 0.0
    else:
        increment =diff/n


    incrementlst.append(increment)

return incrementlst

def incrementedValue(s, i, n):

    start = list(s)
    increment = list(i)
    n = n-1
    finallst = [0,0,0,0]
    if n < 1:
        return start

    for i in range(0,len(start)):
        finallst[i] = start[i] + (n*(increment[i]))


    return finallst

def formatIncrementedValue(l):

    cmykList = list(l)

    formattedString = str(int(round(cmykList[0], 0))) + " " + str(int(round(cmykList[1], 0))) + " " + str(int(round(cmykList[2], 0))) + " " + str(int(round(cmykList[3], 0)))
    return formattedString

# Get user inputs.
depth = int(ca_getcustomvalue ("depth", "0"))
start = ca_getcustomvalue("start", "0")
end = ca_getcustomvalue("end", "0")

startlst = start.split(" ")
startlst = [int(i) for i in startlst]
endlst = end.split(" ")
endlst = [int(i) for i in endlst]

# draw a line and incrementally change the pen colour towards the end colour 
colorlst = interpolate(startlst, endlst, depth)
for i in range(1,depth-1):
    color = formatIncrementedValue(incrementedValue(startlst, colorlst, i))

    #Draw line at correct offset in colour "color"
def插值(s,e,n):
开始=列表
结束=列表(e)
增量lst=[]
对于范围(0,len(开始))中的i:
diff=int(结束[i])-int(开始[i])
如果差异==0:
增量=0.0
其他:
增量=diff/n
incrementlst.append(增量)
返回增量lst
def增量值(s、i、n):
开始=列表
增量=列表(i)
n=n-1
finallst=[0,0,0,0]
如果n<1:
回程起动
对于范围(0,len(开始))中的i:
finallst[i]=开始[i]+(n*(增量[i]))
返回最终列表
def formatIncrementedValue(l):
cmykList=列表(l)
formattedString=str(整数(整数(整数)(整数(整数)(整数)(整数(整数)(整数)(整数(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数)(整数
返回格式化字符串
#获取用户输入。
深度=int(ca_getcustomvalue(“深度”,“0”))
start=ca_getcustomvalue(“开始”、“0”)
end=ca_getcustomvalue(“end”,“0”)
STARTST=start.split(“”)
STARTST=[int(i)表示STARTST中的i]
endlst=end.split(“”)
endlst=[int(i)表示endlst中的i]
#画一条线,并逐渐改变笔的颜色朝向结束颜色
colorlst=插值(STARTST、endlst、depth)
对于范围内的i(1,深度-1):
color=formatIncrementedValue(incrementedValue(STARTST、colorlst、i))
#在颜色“color”的正确偏移处绘制线
这是:

increment =diff/n
正在进行整数除法,例如,如果
diff
为3,
n
为2,则得到1,而不是1.5

使表达式浮动,以解决此问题:

increment = float(diff) / n

但请注意,这当然仅在3.0之前的Python中才是正确的。在3.0+中,/运算符进行“真”除法,//进行整数除法。这似乎没有任何效果。您能否提供演示问题的
深度
开始
结束
的值?当你说“浮点增量似乎把事情搞砸了”时,你是说“出现了一条错误消息”,还是说“它运行了,但结果与我预期的不一样”?请张贴错误信息和/或错误的结果图像。您的缩进错误。
interpolate
的所有行都处于错误的缩进级别。