0

我正在尝试使用 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 个,尽管由于计数 += 1 < 8,循环会使其重复 8 次?

我认为循环会通过每次添加 50、50 来改变 x 和 y 的位置,然后我会调整它以提供正确的坐标来制作我想要的形状,但它甚至不会显示全部 8?

我花了一段时间重新配置代码,但不是永远反复试验,我想也许一些帮助会起作用,谢谢。

我正在使用 Python 3.2.3

4

1 回答 1

1

如果您选择显示一个有四个边的形状,您只需要绘制两个形状。这是因为您要为每个 shape每边增加一次循环计数器。

这不是做循环的好方法,很少需要计数器,当它们是 - 使用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())
于 2012-09-12T23:46:14.537 回答