Python 根据给定的迭代次数计算0.0和1.0的步长差
我制作了这个函数Python 根据给定的迭代次数计算0.0和1.0的步长差,python,math,colors,iteration,Python,Math,Colors,Iteration,我制作了这个函数gradient(iteration),它按顺序返回HSL值列表。现在的问题是,我不知道如何计算步长差来保持函数返回的列表长度=迭代次数(len(梯度(1000))==1000) 这里是gradient()函数: def梯度(迭代): “”“此函数返回HSL值的列表 按顺序排列的所有颜色中的一种 ops={'+':lambda c,步长:min(1.0,c+step), “-”:λc,步长:max(0.0,c-步长)} 索引=0 操作='+' rgb,_list=[1.0,0.0
gradient(iteration)
,它按顺序返回HSL值列表。现在的问题是,我不知道如何计算步长差来保持函数返回的列表长度=迭代次数<代码>(len(梯度(1000))==1000)
这里是gradient()
函数:
def梯度(迭代):
“”“此函数返回HSL值的列表
按顺序排列的所有颜色中的一种
ops={'+':lambda c,步长:min(1.0,c+step),
“-”:λc,步长:max(0.0,c-步长)}
索引=0
操作='+'
rgb,_list=[1.0,0.0,0.0],]
组合=((2,1,0)、(2,0,1)、(0,2,1)、(0,1,2)、(1,0,2)、(1,2,0))
如果迭代>获取长度(1/255)else int(获取长度(1/255)/迭代,则步骤=1
步长/=200
对于范围内的i(迭代):
如果(rgb[combo[index][1]]==1.0且操作=='+')或\
(rgb[combo[index][1]]==0.0,操作=='-'):
操作='-'如果操作=='+'否则'+'
指数+=1
如果len(combo)-1代码很接近,但我相信错误来自于对步骤的思考过于复杂。对于您硬编码的每个组合,该值只需是从0到1的正确数字,反之亦然。您的get_len
函数执行以下操作:(步骤+1)*5
,然后获取该值并尝试近似给定的迭代的正确步长。这可以简化为len(combo)/iteration
,这将在使用+/-操作时为您提供正确的步骤数。我认为用代码更容易看到这一点
def梯度(迭代):
“”“此函数返回HSL值的列表
按顺序排列的所有颜色中的一种
ops={'+':lambda c,步长:min(1.0,c+step),
“-”:λc,步长:max(0.0,c-步长)}
索引=0
操作='+'
rgb,_list=[1.0,0.0,0.0],]
组合=((2,1,0)、(2,0,1)、(0,2,1)、(0,1,2)、(1,0,2)、(1,2,0))
步骤=len(组合)/迭代#正确的计算
对于范围内的i(迭代):
如果(rgb[combo[index][1]]==1.0且操作=='+')或\
(rgb[combo[index][1]]==0.0,操作=='-'):
操作='-'如果操作=='+'否则'+'
指数+=1
如果len(combo)“但是计算不正确。”怎么会这样呢?你得到的元素是太多还是太少?这是否回答了你的问题@MisterMiyagi:我的意思是,我为步骤
得到的值不正确,无法提供相同的输出量。让我们看看,如果iteration=1000
它会给我5个输出值,而它们应该是1000,与iteration相同。还有,浮点数学是否被破坏了?这个问题解决不了我的问题。啊!我现在觉得自己很愚蠢,在过去的两天里,我一直在给自己的大脑施加压力,事情就这么简单。另外,现在使用len(combo)
比从中减去-1更有意义,因为-1甚至没有给出完整的颜色。非常感谢。没问题,你已经完成了99%的任务,哈哈。很高兴我能帮忙!