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

Turtle图形按键变色问题:hsv_to_rgb仅单次生效的技术问询

Turtle按键切换颜色仅生效一次的解决方案

问题核心:你定义的全局变量h在change_color函数中只被读取,从未被更新。每次按键调用change_color时,计算的都是初始值0 + 0.1,所以颜色不会变化。

关键修改点

  • 在change_color函数内通过global h声明要修改全局变量h,避免创建局部变量覆盖全局值
  • 每次按键后更新h的数值,并通过取模运算h %= 1保证h始终在HSV色调的有效范围(0~1)内

修改后的完整代码

from turtle import *
from colorsys import *

pencolor('blue')
pensize(2)
bgcolor('black')
default_size = 0
h = 0


def move_up():
    sety(ycor() + 50)


def move_left():
    setx(xcor() - 50)


def move_right():
    setx(xcor() + 50)


def move_down():
    sety(ycor() - 50)


def change_color():
    global h  # 声明要修改全局变量h
    h += 0.1  # 每次按键更新h的值
    h %= 1  # 保证h始终在0~1之间循环
    c = hsv_to_rgb(h, 1, 1)
    color(c)


def call_movement():
    onkey(move_up, 'Up')
    onkey(move_left, "Left")
    onkey(move_right, "Right")
    onkey(move_down, "Down")
    listen()


def color_change():
    onkey(change_color, "+")
    listen()


call_movement()
color_change()

done()

这样每次按下+键时,h的值会累加0.1并循环,颜色也会随之逐次切换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:50:46