我试图用Python找出给定颜色的补色。这是我的代码。代码返回错误消息告诉" AttributeError:' list'对象没有属性' join'"我需要一个提示。此外,可能会有一个更健壮的代码来计算相反/互补的颜色,我基本上都在寻找。您的建议会有所帮助。
from PIL import Image
def complementaryColor(hex):
"""Returns complementary RGB color
Example:
>>>complementaryColor('FFFFFF')
'000000'
"""
if hex[0] == '#':
hex = hex[1:]
rgb = (hex[0:2], hex[2:4], hex[4:6])
comp = ['02%X' % (255 - int(a, 16)) for a in rgb]
return comp.join()
另一个类似的功能
def blackwhite(my_hex):
"""Returns complementary RGB color
Example:
>>>complementaryColor('FFFFFF')
'000000'
"""
if my_hex[0] == '#':
my_hex = my_hex[1:]
rgb = (my_hex[0:2], my_hex[2:4], my_hex[4:6])
comp = ['%X' % (0 if (15 - int(a, 16)) <= 7 else 15) for a in rgb]
return ''.join(comp)
print blackwhite('#36190D')
答案 0 :(得分:1)
您的join
和格式需要修复。列表没有join
方法,字符串可以:
def complementaryColor(my_hex):
"""Returns complementary RGB color
Example:
>>>complementaryColor('FFFFFF')
'000000'
"""
if my_hex[0] == '#':
my_hex = my_hex[1:]
rgb = (my_hex[0:2], my_hex[2:4], my_hex[4:6])
comp = ['%02X' % (255 - int(a, 16)) for a in rgb]
return ''.join(comp)
对于两个十六进制字符而不是%02X
,十六进制格式为'02%X'
。后者仅将前导02
附加到3个字符的受损输出,而不是6个。
hex
是内置函数,因此您可以考虑将名称更改为my_hex
,以避免隐藏原始hex
函数。