我正在研究用 python 编写的 pacman 程序。其中一个模块负责处理吃 bean 人游戏的图形表示。这当然是一些主机颜色。列表如下:
GHOST_COLORS = [] ## establishes a list of ghost colours
GHOST_COLORS.append(formatColor(.9,0,0)) # Red
GHOST_COLORS.append(formatColor(0,.3,.9)) # Blue
GHOST_COLORS.append(formatColor(.98,.41,.07)) # Orange
GHOST_COLORS.append(formatColor(.1,.75,.7)) # Green
GHOST_COLORS.append(formatColor(1.0,0.6,0.0)) # Yellow
GHOST_COLORS.append(formatColor(.4,0.13,0.91)) # Purple
这些颜色随后被映射:
GHOST_VEC_COLORS = map(colorToVector, GHOST_COLORS)
这里是 colorToVector:
def colorToVector(color):
return map(lambda x: int(x, 16) / 256.0, [color[1:3], color[3:5], color[5:7]])
我想我了解 lambda 的工作原理。但我对颜色切片的方式感到困惑:
- 集成到 (x,16) 元组中,
- 转换为 int --> 这应该是不可能的
- 然后除以 256.0?
每当我尝试创建元组并将其转换为 python 中的 int 时,我似乎都会收到错误。
我在这里缺少什么?
任何帮助将不胜感激。
PS:当我介绍时
print(color)
和
print map(lambda x: int(x, 16) / 256.0, [color[1:3], color[3:5], color[5:7]])
对于混合,我得到以下 GHOST_COLORS[0] 颜色值:
>>#e50000
>>[0.89453125, 0.0, 0.0]
最佳答案
#e50000
是一个字符串,有 7 个字符。所以,
color[1:3] == "e5" # Hexadecimal value
color[3:5] == "00" # Hexadecimal value
color[5:7] == "00" # Hexadecimal value
现在,它们被一一传递给 lambda
函数 int(x, 16)/256.0
。现在,x
将具有 e5
。 int
函数的第二个参数表明,第一个参数基于 16 进制。因此,int
将 e5
转换为等效的以 10 为基数的数字,然后它除以 256。
关于python - map (lambda x : int(x, 16)/256.0,[颜色[1 :3],颜色[3 :5],颜色[5:7]]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20441958/