2016-04-01 8 views
0

Vor einer Weile machte ich dieses Programm, um eine Flagge zu zeichnen, und ich habe versucht, es vor kurzem auszuführen, und es funktionierte nicht aus irgendeinem Grund, obwohl es war, als ich es ursprünglich codiert. Die Streifen ziehen gut, aber wenn es um das blaue Quadrat und die Sterne geht, bewegt sich der Schildkrötenzeiger nicht. Ich benutze Python 2.7.11, aber das wurde vor einem Jahr geschrieben, denke ich, könnte das der Grund sein, warum es nicht funktioniert? Ich erinnere mich nicht, welche Version von Python ich benutzte.Python Turtle nicht korrekt zeichnen

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) 

Antwort

0

Hier ist Ihr Problem:

Ich verwende Python 2.7.11

Aufgrund der unterschiedlichen Art und Weise des Divisions-Operator wird zwischen Python 2 und Python 3, dieses Programm funktioniert funktionieren nur richtig, wenn sie in Python3 ausgeführt werden. Beweis: enter image description here

In Python2, Division kürzt: 3/2 => 1
In Python3 produziert Division immer einen float: 3/2 => 1.5

einfach Ihren Code in Python3 laufen und es sollte funktionieren.

+0

... oder, noch besser, fügen Sie einfach 'from __future__ import division' an den Anfang der Datei – Gerrat

+0

@Gerrat: Das funktioniert, aber ich würde es nicht tun, es sei denn, es gab einen Grund in Python2 zu laufen war wünschenswert. – Functino

+0

Ich würde nicht eine ganz neue Python-Version installieren, nur um keine Zeile zu einem Programm hinzuzufügen. Er erwähnte, dass er Python2.7 verwendete. – Gerrat