我正在尝试使用Python / Turtle来实现这样的结果:
我画了不均匀的方块,但我的意思是他们是均匀的。方块也可以是任何形状,具体取决于用户输入(例如,多边形为5)。
到目前为止,这是我的代码:
import turtle
import time
import random
print ("This program draws shapes based on the number you enter in a uniform pattern.")
num_str = input("Enter the side number of the shape you want to draw: ")
if num_str.isdigit():
squares = int(num_str)
angle = 180 - 180*(squares-2)/squares
turtle.color(random.random(),random.random(), random.random())
turtle.begin_fill()
count = 0
x = -80
y = -80
turtle.setpos(x,y)
turtle.down()
while count < 8:
x += 50
y += 50
turtle.goto(x,y)
for i in range(squares):
count += 1
turtle.forward(20)
turtle.left(angle)
turtle.forward(20)
print (turtle.pos())
turtle.end_fill()
time.sleep(15)
turtle.bye()
这就是我得到的:
我得到的错误是:如何让它打印出8个形状,而不是只有2个,我虽然循环会使它重复8次因为计数+ = 1&lt; 8?
我认为循环会改变x和y的位置,每次加50,50,然后我会调整它以给出正确的坐标来制作我想要的形状,但它甚至都不会显示所有8 ?
我花了一段时间重新配置代码,但不是永远地进行试验和错误,我想也许有些帮助会起作用,谢谢。
我正在使用Python 3.2.3
答案 0 :(得分:1)
如果您选择显示四边形状,则只能绘制两个形状。这是因为你为每个形状增加你的循环计数器每次 。
这不是一个做循环的好方法,很少需要计数器,当它们是 - 使用enumerate
你想尝试这样的事情。
numshapes = 8
for x in range(numshapes):
x += 50
y += 50
turtle.goto(x,y)
for i in range(squares):
turtle.forward(20)
turtle.left(angle)
turtle.forward(20)
print (turtle.pos())