早上/下午/晚上好!我现在正在制作一个程序,我遇到了一个问题。该程序应从给定文本创建QR码,并应将其颜色更改为RGB或HEX中给定的颜色。但是,当我将HEX颜色代码用于RGB"解释器" ...好吧,您可以看到此问题:输入-61C3FF和输出应该向我展示诸如r = 61到十进制(97)的东西(97),g = C3到小数(195)和b = ff到十进制(255)。但是在输出中,我只能看到r = 6,g = 12,b = 15。这是我的代码的一部分,必须识别出给出哪种颜色代码:RGB或HEX,并且必须将十六进制"转换"到RGB(例如,RGB中的{#} 9effec将为158 255 236)。
>for i in color:
if i == " ":
color = color.split()
x = color[0]
y = color[1]
z = color[2]
else: # If HEX color
if color[0] == "#": # if it starts with "#"
color = color[1:]
decX = color[0:1]
decY = color[2:3]
decZ = color[4:5]
x = int(decX, 16)
y = int(decY, 16)
z = int(decZ, 16)
print(color, x, y, z)
else: # if it's without "#"
decX = color[0:1]
decY = color[2:3]
decZ = color[4:5]
x = int(decX, 16)
y = int(decY, 16)
z = int(decZ, 16)
print(color, x, y, z)
如果您需要完整的代码-https://pastebin.com/ycgk2kwu
您的问题是由错误的切片引起的,请考虑以下示例:
color = "61c3ff"
print(color[0:1]) #6
print(color[2:3]) #c
print(color[4:5]) #f
您可以看到str
的切片以[t:t+1]
的形式给出长度1
的str
,只需增加每个切片中的第二个值,它应该正常工作:
color = "61c3ff"
print(color[0:2]) #61
print(color[2:4]) #c3
print(color[4:6]) #ff