float和in上>>的TypeError

2024-06-16 09:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

color = complexity * (255 / iterationCap)
r = (color >> 16) & 255
g = (color >> 8) & 255
b = (color >> 0) & 255

我试图从color变量中获得的浮点数计算颜色。

目前,我正在使用python 3.3来尝试移位位,并使用255来获得正确的rgb值。

我得到的错误是:

TypeError: unsupported operand type(s) for >>: 'float' and 'int'
  1. 有什么简单的方法可以解决这个问题吗?比如,我能用int变换浮点吗?而且
  2. 如果不是,有没有一个简单的方法来计算颜色从一个数字?

目前,我使用图像库将像素绘制到一个文件中,然后将颜色元组固定到一个数组中,然后将其输入Image.putdata(..)


Tags: 方法代码for颜色type错误colorint
3条回答

在Python 3中,/运算符是浮点除法。要使用//进行整数除法。

考虑到您对代码应该做什么的评论,我们可以编写如下内容:

color = int(complexity * 255 / iterationCap) # gives an integer number from 0 to 255
r = color >> 16
g = color >> 8
b = color

当复杂度改变时,会产生一个灰色渐变。

在尝试按位操作之前转换为int。

color = int(complexity * (255 / iterationCap))
color = long(complexity * (255 / iterationCap))

因为移位浮点数是一个未定义的操作。

相关问题 更多 >