彩虹糖
from turtle import *
from random import random
import contextlib
def draw_circle ( r) :
a, b, c = random( ) , random( ) , random( )
fillcolor( a, b, c)
begin_fill( )
circle( r)
end_fill( )
def pen_skip ( step) :
penup( )
forward( step)
pendown( )
speed( 5 )
setup( width= 800 , height= 600 )
screensize( 600 , 400 , "gray" )
long = 600
high = 450
left( 180 )
pen_skip( 250 )
left( 90 )
pen_skip( 200 )
left( 90 )
high_start = 50
high_step = 50
long_start = 50
long_step = 50
for i in range ( high_start, high, high_step) :
for j in range ( long_start, long , long_step) :
if ( i// high_step) % 2 == 1 :
if j == long - long_step:
draw_circle( long_step// 2 )
continue
draw_circle( long_step // 2 )
pen_skip( long_step)
else :
if j == long - long_step:
draw_circle( - long_step // 2 )
continue
draw_circle( - long_step // 2 )
pen_skip( long_step)
if ( i// 50 ) % 2 == 1 :
left( 90 )
pen_skip( high_step)
left( 90 )
else :
right( 90 )
pen_skip( high_step)
right( 90 )
exitonclick( )
阴阳图
from turtle import *
def yin ( radius, color1, color2) :
width( 3 )
color( "black" , color1)
begin_fill( )
circle( radius/ 2 . , 180 )
circle( radius, 180 )
left( 180 )
circle( - radius/ 2 . , 180 )
end_fill( )
left( 90 )
up( )
forward( radius* 0.35 )
right( 90 )
down( )
color( color1, color2)
begin_fill( )
circle( radius* 0.15 )
end_fill( )
left( 90 )
up( )
backward( radius* 0.35 )
down( )
left( 90 )
def main ( ) :
reset( )
yin( 200 , "black" , "white" )
yin( 200 , "white" , "black" )
ht( )
return "Done!"
if __name__ == '__main__' :
main( )
mainloop( )
花纹设计
from turtle import Turtle, mainloop
from time import clock
class Designer ( Turtle) :
def design ( self, homePos, scale) :
self. up( )
for i in range ( 5 ) :
self. forward( 64.65 * scale)
self. down( )
self. wheel( self. position( ) , scale)
self. up( )
self. backward( 64.65 * scale)
self. right( 72 )
self. up( )
self. goto( homePos)
self. right( 36 )
self. forward( 24.5 * scale)
self. right( 198 )
self. down( )
self. centerpiece( 46 * scale, 143.4 , scale)
self. getscreen( ) . tracer( True )
def wheel ( self, initpos, scale) :
self. right( 54 )
for i in range ( 4 ) :
self. pentpiece( initpos, scale)
self. down( )
self. left( 36 )
for i in range ( 5 ) :
self. tripiece( initpos, scale)
self. left( 36 )
for i in range ( 5 ) :
self. down( )
self. right( 72 )
self. forward( 28 * scale)
self. up( )
self. backward( 28 * scale)
self. left( 54 )
self. getscreen( ) . update( )
def tripiece ( self, initpos, scale) :
oldh = self. heading( )
self. down( )
self. backward( 2.5 * scale)
self. tripolyr( 31.5 * scale, scale)
self. up( )
self. goto( initpos)
self. setheading( oldh)
self. down( )
self. backward( 2.5 * scale)
self. tripolyl( 31.5 * scale, scale)
self. up( )
self. goto( initpos)
self. setheading( oldh)
self. left( 72 )
self. getscreen( ) . update( )
def pentpiece ( self, initpos, scale) :
oldh = self. heading( )
self. up( )
self. forward( 29 * scale)
self. down( )
for i in range ( 5 ) :
self. forward( 18 * scale)
self. right( 72 )
self. pentr( 18 * scale, 75 , scale)
self. up( )
self. goto( initpos)
self. setheading( oldh)
self. forward( 29 * scale)
self. down( )
for i in range ( 5 ) :
self. forward( 18 * scale)
self. right( 72 )
self. pentl( 18 * scale, 75 , scale)
self. up( )
self. goto( initpos)
self. setheading( oldh)
self. left( 72 )
self. getscreen( ) . update( )
def pentl ( self, side, ang, scale) :
if side < ( 2 * scale) : return
self. forward( side)
self. left( ang)
self. pentl( side - ( .38 * scale) , ang, scale)
def pentr ( self, side, ang, scale) :
if side < ( 2 * scale) : return
self. forward( side)
self. right( ang)
self. pentr( side - ( .38 * scale) , ang, scale)
def tripolyr ( self, side, scale) :
if side < ( 4 * scale) : return
self. forward( side)
self. right( 111 )
self. forward( side / 1.78 )
self. right( 111 )
self. forward( side / 1.3 )
self. right( 146 )
self. tripolyr( side * .75 , scale)
def tripolyl ( self, side, scale) :
if side < ( 4 * scale) : return
self. forward( side)
self. left( 111 )
self. forward( side / 1.78 )
self. left( 111 )
self. forward( side / 1.3 )
self. left( 146 )
self. tripolyl( side * .75 , scale)
def centerpiece ( self, s, a, scale) :
self. forward( s) ; self. left( a)
if s < ( 7.5 * scale) :
return
self. centerpiece( s - ( 1.2 * scale) , a, scale)
def main ( ) :
t = Designer( )
t. speed( 0 )
t. hideturtle( )
t. getscreen( ) . delay( 0 )
t. getscreen( ) . tracer( 0 )
at = clock( )
t. design( t. position( ) , 2 )
et = clock( )
return "runtime: %.2f sec." % ( et- at)
if __name__ == '__main__' :
msg = main( )
print ( msg)
mainloop( )
时钟
from turtle import *
from datetime import datetime
def jump ( distanz, winkel= 0 ) :
penup( )
right( winkel)
forward( distanz)
left( winkel)
pendown( )
def hand ( laenge, spitze) :
fd( laenge* 1.15 )
rt( 90 )
fd( spitze/ 2.0 )
lt( 120 )
fd( spitze)
lt( 120 )
fd( spitze)
lt( 120 )
fd( spitze/ 2.0 )
def make_hand_shape ( name, laenge, spitze) :
reset( )
jump( - laenge* 0.15 )
begin_poly( )
hand( laenge, spitze)
end_poly( )
hand_form = get_poly( )
register_shape( name, hand_form)
def clockface ( radius) :
reset( )
pensize( 7 )
for i in range ( 60 ) :
jump( radius)
if i % 5 == 0 :
fd( 25 )
jump( - radius- 25 )
else :
dot( 3 )
jump( - radius)
rt( 6 )
def setup ( ) :
global second_hand, minute_hand, hour_hand, writer
mode( "logo" )
make_hand_shape( "second_hand" , 125 , 25 )
make_hand_shape( "minute_hand" , 130 , 25 )
make_hand_shape( "hour_hand" , 90 , 25 )
clockface( 160 )
second_hand = Turtle( )
second_hand. shape( "second_hand" )
second_hand. color( "gray20" , "gray80" )
minute_hand = Turtle( )
minute_hand. shape( "minute_hand" )
minute_hand. color( "blue1" , "red1" )
hour_hand = Turtle( )
hour_hand. shape( "hour_hand" )
hour_hand. color( "blue3" , "red3" )
for hand in second_hand, minute_hand, hour_hand:
hand. resizemode( "user" )
hand. shapesize( 1 , 1 , 3 )
hand. speed( 0 )
ht( )
writer = Turtle( )
writer. ht( )
writer. pu( )
writer. bk( 85 )
def wochentag ( t) :
wochentag = [ "Monday" , "Tuesday" , "Wednesday" ,
"Thursday" , "Friday" , "Saturday" , "Sunday" ]
return wochentag[ t. weekday( ) ]
def datum ( z) :
monat = [ "Jan." , "Feb." , "Mar." , "Apr." , "May" , "June" ,
"July" , "Aug." , "Sep." , "Oct." , "Nov." , "Dec." ]
j = z. year
m = monat[ z. month - 1 ]
t = z. day
return "%s %d %d" % ( m, t, j)
def tick ( ) :
t = datetime. today( )
sekunde = t. second + t. microsecond* 0.000001
minute = t. minute + sekunde/ 60.0
stunde = t. hour + minute/ 60.0
try :
tracer( False )
writer. clear( )
writer. home( )
writer. forward( 65 )
writer. write( wochentag( t) ,
align= "center" , font= ( "Courier" , 14 , "bold" ) )
writer. back( 150 )
writer. write( datum( t) ,
align= "center" , font= ( "Courier" , 14 , "bold" ) )
writer. forward( 85 )
tracer( True )
second_hand. setheading( 6 * sekunde)
minute_hand. setheading( 6 * minute)
hour_hand. setheading( 30 * stunde)
tracer( True )
ontimer( tick, 100 )
except Terminator:
pass
def main ( ) :
tracer( False )
setup( )
tracer( True )
tick( )
return "EVENTLOOP"
if __name__ == "__main__" :
mode( "logo" )
msg = main( )
print ( msg)
mainloop( )
wikipedia
from turtle import Screen, Turtle, mainloop
from time import clock, sleep
def mn_eck ( p, ne, sz) :
turtlelist = [ p]
for i in range ( 1 , ne) :
q = p. clone( )
q. rt( 360.0 / ne)
turtlelist. append( q)
p = q
for i in range ( ne) :
c = abs ( ne/ 2.0 - i) / ( ne* .7 )
for t in turtlelist:
t. rt( 360 . / ne)
t. pencolor( 1 - c, 0 , c)
t. fd( sz)
def main ( ) :
s = Screen( )
s. bgcolor( "black" )
p= Turtle( )
p. speed( 0 )
p. hideturtle( )
p. pencolor( "red" )
p. pensize( 3 )
s. tracer( 36 , 0 )
at = clock( )
mn_eck( p, 36 , 19 )
et = clock( )
z1 = et- at
sleep( 1 )
at = clock( )
while any ( [ t. undobufferentries( ) for t in s. turtles( ) ] ) :
for t in s. turtles( ) :
t. undo( )
et = clock( )
return "runtime: %.3f sec" % ( z1+ et- at)
if __name__ == '__main__' :
msg = main( )
print ( msg)
mainloop( )