gpt4 book ai didi

Python Turtle Trouble - 循环结束太早

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:39 26 4
gpt4 key购买 nike

我正在尝试构建一个蒙德里安艺术创作器,它允许您创建任意数量的矩形,每个矩形的大小都是随机的。我能够创建随机大小,但我遇到的麻烦是让它创建两个以上的随机矩形。

import turtle
import random

turtle.screensize(1000,1000)
turtle.setworldcoordinates(-500,-500,500,500)

piet = turtle.Turtle()
piet.speed(3)

#primary colors, red, blue, yellow
#piet.color(red,blue,yellow)

rectangles = int(input('How many rectangles should be drawn?'))
rectangle_w = int(input('What should be the max width of the rectangles?'))
rectangle_h = int(input('What should be the max height of the rectangles?'))

def mondrian(t,random_w,random_h):
for number_r in range(1):
for box in range(2):
t.left(90)
t.forward(random_w)
t.left(90)
t.forward(random_h)



mondrian(piet,random.randint(10,rectangle_w),random.randint(10,rectangle_h))

def repeat_mondrian():
while mondrian(piet,random.randint(10,rectangle_w),random.randint(10,rectangle_h)) < rectangles:
return False
repeat_mondrian()

最佳答案

不要使用 while这里。调用函数 rectangle次,使用 for-loop :

def repeat_mondrian():
for i in range(rectangles):
mondrian(piet,random.randint(10,rectangle_w),random.randint(10,rectangle_h))

请注意,在 Python 中,函数返回 None默认情况下,如果函数结束时没有到达 return陈述。所以 mondrian函数总是返回 None .

所以条件

mondrian(piet,random.randint(10,rectangle_w),random.randint(10,rectangle_h)) < rectangles

相当于

None < rectangles

在 Python2 中,自 None 以来始终为 True小于任何数。在Python3中,比较None < rectangles会引发类型错误!

为什么你的代码从来没有画过一个以上的矩形是因为 return-statement :

while mondrian(piet,random.randint(10,rectangle_w),random.randint(10,rectangle_h)) < rectangles:
return False

导致 Python 退出 repeat_mondianwhile-loop 中的第一次迭代之后.

关于Python Turtle Trouble - 循环结束太早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com