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

Processing代码从Java转Python时for循环运行报错问题求解

错误原因
  • 核心触发报错的原因是误用Python range() 函数语法:Java的for循环支持在循环结构内直接写变量递增逻辑,但Python的range()仅接受三个位置参数range(起始值, 终止值, 步长),你在range的参数中写x = x + width/2时,变量x还未完成初始化就被引用,直接触发UnboundLocalError。
  • 额外存在两处逻辑/语法问题:第二个循环的range参数同样误用了赋值表达式,且原Java代码中用到的全局变量dim没有在Python版本的setup()中定义。
修复方案
  1. 提前声明全局变量dim,在setup()中完成赋值和原Java逻辑对齐
  2. 修正两个for循环的range参数为符合Python语法的格式,步长直接传入对应数值,注意Python range仅接受整数参数,用整除运算//直接得到整数更便捷
  3. 修正drawGradient中的半径取值,和原Java逻辑对齐为dim/2

修复后完整代码:

dim = 0

def setup():
    global dim
    size(800, 800)
    dim = width // 2
    background(0)
    colorMode(HSB, 360, 100, 100)
    noStroke()
    ellipseMode(RADIUS)
    frameRate(1)    

def draw():
    global dim
    background(0)
    for x in range(0, width + 1, dim):
        drawGradient(x, height / 2)

def drawGradient(a, b):
    global dim
    radius = dim // 2
    h = random(0, 360)
    for r in range(radius, 0, -1):
        fill(h, 90, 90)
        ellipse(a, b, r, r)
        h = (h + 1) % 360

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:57:03