for 循环从 JAVA 转换为 Python 处理的问题
Issues with for loop converting from JAVA to Python processing
嘿,所以我试图在 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' 在赋值前被引用
了解 range()
function and 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
嘿,所以我试图在 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' 在赋值前被引用
了解 range()
function and 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