使用乌龟绘制形状

时间:2012-09-12 23:38:39

标签: python python-3.x turtle-graphics

我正在尝试使用Python / Turtle来实现这样的结果:

http://i.imgur.com/2eoAB.png

我画了不均匀的方块,但我的意思是他们是均匀的。方块也可以是任何形状,具体取决于用户输入(例如,多边形为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()

这就是我得到的:

http://i.imgur.com/7hAje.png

我得到的错误是:如何让它打印出8个形状,而不是只有2个,我虽然循环会使它重复8次因为计数+ = 1&lt; 8?

我认为循环会改变x和y的位置,每次加50,50,然后我会调整它以给出正确的坐标来制作我想要的形状,但它甚至都不会显示所有8 ?

我花了一段时间重新配置代码,但不是永远地进行试验和错误,我想也许有些帮助会起作用,谢谢。

我正在使用Python 3.2.3

1 个答案:

答案 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())