【问题标题】:Issues with for loop converting from JAVA to Python processing从 JAVA 到 Python 处理的 for 循环转换问题
【发布时间】:2021-09-12 14:42:36
【问题描述】:

嘿,所以我试图在python中练习这个练习,但是代码只有在java中可用,代码如下:


void setup() {
  size(640, 360);
  dim = width/2;
  background(0);
  colorMode(HSB, 360, 100, 100);
  noStroke();
  ellipseMode(RADIUS);
  frameRate(1);
}

void draw() {
  background(0);
  for (int x = 0; x <= width; x+=dim) {
    drawGradient(x, height/2);
  } 
}

void drawGradient(float x, float y) {
  int radius = dim/2;
  float h = random(0, 360);
  for (int r = radius; r > 0; --r) {
    fill(h, 90, 90);
    ellipse(x, y, r, r);
    h = (h + 1) % 360;
  }
}

我有以下python代码:

 def setup():
    size(800,800)
    background(0)
    colorMode(HSB, 360,100,100)
    noStroke()
    ellipseMode(RADIUS)
    frameRate(1)    


def draw():
    background(0)
    for x in range(0, width, x = x + width/2):
        drawGradient(x, height/2)
        
   
    
def drawGradient(a,b):
    radius = width/2
    h = random(0,360)
    for r in range(radius, 0, radius= radius - 1):
        fill(h, 90,90)
        ellipse(a,b,r,r)
        h = (h+1) % 360

我收到以下错误

UnboundLocalError:赋值前引用了局部变量“x”

【问题讨论】:

  • 难道不应该将 dim 向后迭代以创建径向圆吗?我也对python如何知道第二个参数感到困惑,比如它是否小于或大于

标签: java python processing


【解决方案1】:

了解range() 函数和for-loops。在 python 中,一个典型的 for 循环是:

for i in range(0, 10, 1)
    print(i)

这个循环打印从 0 到 9 的数字。


您的代码的正确语法是:

def draw():
    background(0)
    for x in range(0, width+1, width/2):
        drawGradient(x, height/2)
def drawGradient(a,b):
    radius = width/4
    h = random(0,360)
    for r in range(radius, 0, -1):
        # [...]

完整示例:

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

def draw():
    background(0)
    for x in range(0, width+1, width/2):
        drawGradient(x, height/2)
        
def drawGradient(x, y):
    radius = dim/2
    h = random(0, 360)
    for r in range(radius, 0, -1):
        fill(h, 90, 90)
        ellipse(x, y, r, r)
        h = (h+1) % 360

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多