You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确分割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()

关键修复点

  1. 颜色提取逻辑:
    用[hexString[i:i+6] for i in range(0, len(hexString), 6)]直接按6位步长切割输入字符串,从索引0开始,每次取6个字符,确保每个颜色都是连续的6位HEX值,彻底避免计数错误。同时增加过滤逻辑,自动忽略输入末尾不足6位的无效片段。

  2. 换行逻辑优化:
    原代码仅判断xcor() == 370时换行,可能出现画笔超过370的情况。修改为判断current_x + 1 > 370,在即将超过边界时提前换行,确保每行的像素都在预期范围内。

原代码错误细节

原循环中,处理第7个字符时,仅执行了保存前6个字符、重置计数的操作,但该字符本身未被添加到下一个颜色的缓存中,导致第二个颜色从第8个字符开始,最终出现000010这类错位的颜色值。

内容的提问来源于stack exchange,提问作者KirOFF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:35:59