mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00

requires them. Disable executable bits and shebang lines in test and benchmark files in order to prevent using a random system python, and in source files of modules which don't provide command line interface. Fixed shebang line to use python3 executable in the unittestgui script.
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 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()
|