mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	bpo-31803: time.clock() and time.get_clock_info('clock') now emit a
DeprecationWarning warning.
Replace time.clock() with time.perf_counter() in tests and demos.
Remove also hasattr(time, 'monotonic') in test_time since time.monotonic()
is now always available since Python 3.5.
		
	
			
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
"""      turtle-example-suite:
 | 
						|
 | 
						|
             tdemo_tree.py
 | 
						|
 | 
						|
Displays a 'breadth-first-tree' - in contrast
 | 
						|
to the classical Logo tree drawing programs,
 | 
						|
which use a depth-first-algorithm.
 | 
						|
 | 
						|
Uses:
 | 
						|
(1) a tree-generator, where the drawing is
 | 
						|
quasi the side-effect, whereas the generator
 | 
						|
always yields None.
 | 
						|
(2) Turtle-cloning: At each branching point
 | 
						|
the current pen is cloned. So in the end
 | 
						|
there are 1024 turtles.
 | 
						|
"""
 | 
						|
from turtle import Turtle, mainloop
 | 
						|
from time import perf_counter as clock
 | 
						|
 | 
						|
def tree(plist, l, a, f):
 | 
						|
    """ plist is list of pens
 | 
						|
    l is length of branch
 | 
						|
    a is half of the angle between 2 branches
 | 
						|
    f is factor by which branch is shortened
 | 
						|
    from level to level."""
 | 
						|
    if l > 3:
 | 
						|
        lst = []
 | 
						|
        for p in plist:
 | 
						|
            p.forward(l)
 | 
						|
            q = p.clone()
 | 
						|
            p.left(a)
 | 
						|
            q.right(a)
 | 
						|
            lst.append(p)
 | 
						|
            lst.append(q)
 | 
						|
        for x in tree(lst, l*f, a, f):
 | 
						|
            yield None
 | 
						|
 | 
						|
def maketree():
 | 
						|
    p = Turtle()
 | 
						|
    p.setundobuffer(None)
 | 
						|
    p.hideturtle()
 | 
						|
    p.speed(0)
 | 
						|
    p.getscreen().tracer(30,0)
 | 
						|
    p.left(90)
 | 
						|
    p.penup()
 | 
						|
    p.forward(-210)
 | 
						|
    p.pendown()
 | 
						|
    t = tree([p], 200, 65, 0.6375)
 | 
						|
    for x in t:
 | 
						|
        pass
 | 
						|
    print(len(p.getscreen().turtles()))
 | 
						|
 | 
						|
def main():
 | 
						|
    a=clock()
 | 
						|
    maketree()
 | 
						|
    b=clock()
 | 
						|
    return "done: %.2f sec." % (b-a)
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    msg = main()
 | 
						|
    print(msg)
 | 
						|
    mainloop()
 |