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

私が得るエラーは次のとおりです。カウント+=1 <8のため、ループによって8回繰り返されるのに、2つだけではなく、合計8つの形状を印刷するにはどうすればよいですか?

ループは毎回50、50を追加することで、xとyの位置を変更すると思いました。次に、ループを微調整して、目的の形状を作成するための正しい座標を指定しますが、まだ8つすべてが表示されませんか?

コードの再構成にしばらく時間を費やしましたが、試行錯誤を繰り返す代わりに、何らかの助けがうまくいくと思いました。

Python3.2.3を使用しています

4

1 に答える 1

1

4辺の図形を表示する場合は、2つの図形のみを描画します。これは、シェイプごとにループカウンターを片側に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())
于 2012-09-12T23:46:14.537 に答える