python实例练习2

1.七段数码管绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#coding=gbk
from turtle import *
import datetime
def drawgap():
    pu()
    fd(5)
def drawLine(draw):
    drawgap()
    pd() if draw else pu()
    fd(40)
    drawgap()
    right(90)
def drawDigit(d):
    drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,6,8] else drawLine(False)
    left(90)
    drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
    left(180)
    fd(20)
def drawDate(date):
    pencolor("red")
    for i in date:
        if i=='-':
            write('年',font=("Arial",18,"normal"))
            pencolor("green")
            fd(40)
        elif i=='=':
            write('月',font=("Arial",18,"normal"))
            pencolor("blue")
            fd(40)
        elif i=='+':
            write('日',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i))
def main():
    setup(800,350,200,200)
    penup()
    fd(-350)
    pensize(5)
    drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))
    hideturtle()
    done()
main()

2.科赫曲线绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#coding=gbk
from turtle import *
def koch(size,n):
    if n==0:
        fd(size)
    else:
        for angle in [0,60,-120,60]:
            left(angle)
            koch(size/3,n-1)
def main():
    setup(600,600)
    speed(0)
    pu()
    goto(-200,100)
    pd()
    pensize(2)
    level=5
    koch(400,level)
    right(120)
    koch(400,level)
    righr(120)
    koch(400,level)
    hideturtle()
    done()
main()

3.汉诺塔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#coding=gbk
from time import time
def move (n, a, b, c):
    if (n == 1):
        print(a, "->", c)
        return
    move(n-1,a, c, b)
    move(1, a, b, c)
    move(n-1, b, a, c)
num = eval(input('请输入A柱盘子的个数'))
print('把',num,'个盘子全部移到C柱子上的顺序为:')
t1 = time()
move(num, "a", "b", "c")
t2 = time()
time = t2-t1
print("耗时为:{}秒".format(time))