如何正确分割HEX颜色值?Python绘图程序颜色错位修复求助
问题修复:HEX颜色提取错位的Python Turtle程序
问题根源
原程序的颜色分组逻辑错误:通过计数变量a判断何时完成一个6位颜色的收集,但当a == 7时,仅保存了前6个字符,当前处理的第7个字符被直接丢弃,导致下一个颜色从第8个字符开始,最终所有后续颜色都出现错位。
修复后的代码
import turtle as tur hexString = input('Введите HEX-строку БЕЗ пробелов: ') tur.clear() tur.penup() startX = -380 startY = 320 tur.goto(startX, startY) # 修复:直接按6位步长切片提取颜色,避免计数错误 hexColors = [hexString[i:i+6] for i in range(0, len(hexString), 6)] # 过滤掉不足6位的无效颜色(如果输入长度不是6的倍数) hexColors = [color for color in hexColors if len(color) == 6] for fullColor in hexColors: current_x = tur.xcor() # 优化换行判断:避免x坐标超过370 if current_x + 1 > 370: startY -= 1 tur.goto(startX, startY) print(tur.pos()) print(fullColor) print() tur.pencolor('#' + fullColor) tur.pendown() tur.fd(1) tur.penup() tur.mainloop()
关键修复点
颜色提取逻辑:
用[hexString[i:i+6] for i in range(0, len(hexString), 6)]直接按6位步长切割输入字符串,从索引0开始,每次取6个字符,确保每个颜色都是连续的6位HEX值,彻底避免计数错误。同时增加过滤逻辑,自动忽略输入末尾不足6位的无效片段。换行逻辑优化:
原代码仅判断xcor() == 370时换行,可能出现画笔超过370的情况。修改为判断current_x + 1 > 370,在即将超过边界时提前换行,确保每行的像素都在预期范围内。
原代码错误细节
原循环中,处理第7个字符时,仅执行了保存前6个字符、重置计数的操作,但该字符本身未被添加到下一个颜色的缓存中,导致第二个颜色从第8个字符开始,最终出现000010这类错位的颜色值。
内容的提问来源于stack exchange,提问作者KirOFF
相关产品推荐
相关产品推荐

