>>的TypeError在float和int

时间:2013-11-14 15:28:09

标签: python python-3.3

我有以下代码:

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

我正在尝试从color变量得到的浮点数计算颜色。

目前,我正在使用python 3.3尝试将位移{255}以及and来获取正确的rgb值。< / p>

我得到的错误是:

TypeError: unsupported operand type(s) for >>: 'float' and 'int'
  1. 有没有一种简单的方法来解决这个问题?比如,我可以使用int移动浮点数吗?和,
  2. 如果没有,是否有一种简单的方法可以从数字中计算颜色?
  3. 目前我正在使用图像库将像素绘制到文件中,我只是将颜色元组添加到数组中,然后将其输入Image.putdata(..)

3 个答案:

答案 0 :(得分:5)

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

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

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

随着复杂性的变化,这会产生灰色渐变。

答案 1 :(得分:1)

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

由于位移浮点数是未定义的操作。

答案 2 :(得分:1)

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

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