2015-04-07 48 views
0

試圖在龜中與python同心正方形。這裏是我的嘗試:Python中的同心正方形與海龜

import turtle 
def draw_square(t, size): 
    for i in range(4): 
     t.forward(size) 
     t.left(90) 
wn = turtle.Screen() 
dan = turtle.Turtle() 

sizevar = 1 
for i in range(10): 
    draw_square(dan,sizevar) 
    sizevar += 20 
    dan.penup() 
    dan.backward(sizevar/ 2) 
    dan.right(90) 
    dan.forward(sizevar/2) 
    dan.left(90) 
    dan.pendown() 

我不知道爲什麼他們不同心,我dan.backward(sizevar/2)dan.forward(sizevar/2)線似乎在方形向下和向左太多了?

+0

您使用的是python2還是python3? – Lalaland

+0

@Lalaland,使用python3。 – siegel

+0

你真的想要第一個方塊是1像素嗎? – jgritty

回答

1

它應該是這樣的:

import turtle 
def draw_square(t, size): 
    for i in range(4): 
     t.forward(size) 
     t.left(90) 
wn = turtle.Screen() 
dan = turtle.Turtle() 
sizevar = 1 
for i in range(10): 
    draw_square(dan, sizevar) 
    sizevar += 20 
    dan.penup() 
    dan.backward(10) 
    dan.right(90) 
    dan.forward(10) 
    dan.left(90) 
    dan.pendown() 

每平方米只有10之外以前的像素。

+0

太棒了!出於某種原因,我並沒有明白sizevar/2每次都不會移動相同的距離。 – siegel

1

同心方環乞求與遞歸算法(而不是迭代)完成:

import turtle 

def draw_square(t, size): 
    for i in range(4): 
     t.forward(size) 
     t.left(90) 

def recursive_draw(t, x, y, size): 
    if (size < 200): 
     t.penup() 
     t.goto(x, y) 
     t.pendown() 
     draw_square(t, size) 
     x -= 10 
     y = x 
     size += 20 
     recursive_draw(t, x, y, size) 

wn = turtle.Screen() 
dan = turtle.Turtle() 
recursive_draw(dan, 0, 0, 1) 

它似乎更容易推理的代碼是這樣的:

基本情況:大小不得超過200 方法策略:將大小增加20個