Python 乌龟绘制不正确

Python Turtle Not Drawing Correctly

不久前,我制作了这个程序来绘制一个旗帜,最近我尝试 运行 它但由于某种原因它没有工作,即使它是我最初编写它的时候。条纹画得很好,但是当涉及到蓝色方块和星星时,海龟指针不会移动到任何地方。我正在使用 python 2.7.11 但这是一年前写的,我想这可能是它不起作用的原因吗?我不记得我使用的 python 是哪个版本。

import turtle

def draw_stripes(length, height, color):
    turtle.speed('fast')
    turtle.color(color)
    turtle.begin_fill()
    turtle.pendown()
    turtle.forward(length)
    turtle.left(90)
    turtle.forward(height)
    turtle.left(90)
    turtle.forward(length)
    turtle.left(90)
    turtle.forward(height)

    for i in range(0,6):
        turtle.penup()
        turtle.left(180)
        turtle.forward(height*2)
        turtle.pendown()
        turtle.right(90)
        turtle.forward(length)
        turtle.left(90)
        turtle.forward(height)
        turtle.left(90)
        turtle.forward(length)
        turtle.left(90)
        turtle.forward(height)

    turtle.end_fill()

def draw_canton(length, height, color):
    turtle.speed('fast')
    turtle.left(180)
    turtle.forward(height/13)
    turtle.color(color)
    turtle.begin_fill()
    turtle.right(90)
    turtle.pendown()
    turtle.forward(length*(2/5))
    turtle.right(90)
    turtle.forward(height*(7/13))
    turtle.right(90)
    turtle.forward(length*(2/5))
    turtle.right(90)
    turtle.forward(height*(7/13))
    turtle.end_fill()

def draw_star_row_six(length, height, size):
    turtle.speed('fast')
    turtle.right(90)
    turtle.forward(length)
    turtle.right(90)
    turtle.forward(length)
    turtle.right(180)
    turtle.forward(size)
    turtle.right(163)

    for i in range (6):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*6)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (6):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*6)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (6):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*6)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (6):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*6)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (6):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length * 2)*6)
    turtle.right(90)
    turtle.forward(height*7)

def draw_star_row_five(length, height, size):
    turtle.right(90)
    turtle.forward(length)
    turtle.right(73)

    for i in range (5):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*5)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (5):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*5)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (5):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.left(253)
    turtle.forward((length*2)*5)
    turtle.left(90)
    turtle.forward(height*2)
    turtle.right(180)
    turtle.right(163)

    for i in range (5):
        draw_star(size, 'white')
        turtle.left(73)
        turtle.forward(length*2)
        turtle.right(73)

    turtle.home()

def draw_star(size, color):
    turtle.color(color)
    turtle.begin_fill()
    turtle.pendown()

    for i in range(5):
        turtle.forward(size)
        turtle.right(144)

    turtle.end_fill()
    turtle.penup()

def get_color():
    return r,g,b



def draw_flag(height):
    turtle.speed('fast')
    turtle.setx(-150)
    turtle.color('black')
    turtle.pendown()
    turtle.forward(height*1.9)
    turtle.left(90)
    turtle.forward(height)
    turtle.left(90)
    turtle.forward(height*1.9)
    turtle.left(90)
    turtle.forward(height)
    turtle.penup()
    turtle.left(90)
    draw_stripes((height*1.9), height/13, 'red')
    draw_canton((height*1.9), height, 'blue')
    draw_star_row_six(((height*1.9)*(2/5))/12,(height*(7/13))/10, ((height/13)*(4/5))/2)
    draw_star_row_five(((height*1.9)*(2/5))/12,(height*(7/13))/10, ((height/13)*(4/5))/2)

height = float(input('Enter The Height of Your Flag: '))
draw_flag(height)

这是你的问题:

I'm using python 2.7.11

由于 Python 2 和 Python 3 中除法运算符的工作方式不同,因此只有 运行 in Python3 时该程序才能正常运行。证明:

在 Python2 中,第 t运行 类别:3 / 2 => 1
在 Python3 中,除法总是产生一个浮点数:3 / 2 => 1.5

只需 运行 您在 Python3 中的代码即可。