Python turtle设置RGB颜色报bad color sequence错误的原因与修复方法
报错原因
turtle库默认使用**01区间浮点数**作为RGB颜色通道的合法取值,你也可以手动切换为0255区间整数的取值模式。
你的代码里三个颜色通道初始值设为1.0,第一次循环就各自加1变成2.0,直接超出了默认模式下的取值上限,因此触发bad color sequence: (2.0, 2.0, 2.0)报错。另外你设置的每次加1的步长过大,就算切换到255取值模式,也会在200多次循环后超出上限,无法持续实现平滑的背景色渐变效果。
修复方案
推荐先切换到更符合日常使用习惯的0~255整数RGB模式,再调整颜色值的变化逻辑,用取模运算避免数值溢出:
import turtle import time as wait turtle.setup(500,500) ws = turtle.Screen() ws.title('epic turtl') # 切换RGB颜色模式为0-255整数取值范围 turtle.colormode(255) ws.bgcolor('black') turtle.tilt(73) turtle.color('red','yellow') turtle.turtlesize(5,5,7) turtle.shape('circle') turtle.penup() i = 1 # 颜色初始值从0开始 color_r = 0 color_g = 0 color_b = 0 while i <= 360: turtle.forward(1) turtle.left(1) i += 1 # 三个通道设置不同增量,用%255取模保证值始终在0-255区间内循环 color_r = (color_r + 1) % 255 color_g = (color_g + 2) % 255 color_b = (color_b + 3) % 255 turtle.bgcolor(color_r, color_g, color_b) wait.sleep(10)
- 你可以自行调整三个通道的增量数值,差值越大颜色变幻的视觉差异越明显
- 如果想保留默认的01浮点模式,只要把增量改成0.0010.003左右的小浮点数,去掉colormode切换语句即可,逻辑完全一致
内容的提问来源于stack exchange,提问作者cycooYT
相关产品推荐
相关产品推荐

