Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据给定的迭代次数计算0.0和1.0的步长差_Python_Math_Colors_Iteration - Fatal编程技术网

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%的任务,哈哈。很高兴我能帮忙!