2016-04-01 2 views
0

Некоторое время назад я сделал эту программу, чтобы нарисовать флаг, и я попытался запустить его недавно, и он почему-то не работал, хотя это было, когда я изначально его закодировал. Полоски рисуют хорошо, но когда дело доходит до синего квадрата и звезд, указатель черепахи никуда не движется. Я использую python 2.7.11, но это было написано год назад. Думаю, это может быть причиной того, что он не работает? Я не помню, какую версию python я использовал.Python Turtle Not Drawing Correctly

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) 

ответ

0

Вот ваша проблема:

Я использую питона 2.7.11

Благодаря другому оператор деления работает между Python 2 и Python 3, эта программа будет работает только при запуске в Python3. Доказательство: enter image description here

В python2, деление обрезает: 3/2 => 1
В Python3, деление всегда производит поплавок: 3/2 => 1.5

Просто запустить свой код в Python3 и он должен работать.

+0

... или, еще лучше, просто добавьте 'из __future__ import division' в верхнюю часть файла – Gerrat

+0

@Gerrat: Это работает, но я бы этого не сделал, если бы не была какая-то причина, работающая в Python2. – Functino

+0

Я бы не установил совершенно новую версию Python, чтобы не добавлять одну строку в программу. Он упомянул, что использовал Python2.7. – Gerrat