实验六 turtle绘图与python库的运用

发布时间 2023-06-12 15:35:21作者: 理理理

task1_1

实验源码

 1 from turtle import *
 2 
 3 
 4 def move(x, y):
 5     penup()
 6     goto(x, y)
 7     pendown()
 8 
 9 
10 def draw(n, size=100):
11     for i in range(n):
12         fd(size)
13         left(360/n)
14 
15 
16 def main():
17     pensize(2)
18     pencolor('red')
19 
20     move(-200, 0)
21     draw(3)
22 
23     move(0, 0)
24     draw(4)
25 
26     hideturtle()
27     done()
28 
29 
30 main()

 

运行截图

 

task1_2

实验源码

 1 from turtle import *
 2 
 3 
 4 def moveto(x, y):
 5     penup()
 6     goto(x, y)
 7     pendown()
 8 
 9 
10 def main():
11     pensize(2)
12     pencolor('blue')
13 
14     moveto(-150, 0)
15     circle(50)
16 
17     moveto(0, 0)
18     circle(50, steps=4)
19 
20     moveto(150, 0)
21     circle(50, steps=5)
22 
23     moveto(300, 0)
24     circle(50, steps=6)
25 
26     hideturtle()
27     done()
28 
29 
30 main()

 

运行截图

 

task2_1

实验源码

 1 from turtle import*
 2 
 3 
 4 def moveto(x, y):
 5     penup()
 6     goto(x, y)
 7     pendown()
 8 
 9 
10 def main():
11     setup(800, 600)
12     radius = 20
13     offset = 20
14 
15     for i in range(9):
16         moveto(0, -radius)
17         circle(radius)
18         radius += offset
19 
20     hideturtle()
21     done()
22 
23 
24 main()

 

运行截图

 

task2_2

实验源码

 1 from turtle import*
 2 from random import random
 3 
 4 
 5 def moveto(x, y):
 6     penup()
 7     goto(x, y)
 8     pendown()
 9 
10 
11 def gen_color():
12     return tuple(random() for i in range(3))
13 
14 
15 def main():
16     setup(800, 600)
17 
18     radius = 180
19     # radius = 20
20     offset = 20
21 
22     for i in range(9):
23         moveto(0, -radius)
24         color(gen_color())
25 
26         begin_fill()
27         circle(radius)
28         end_fill()
29 
30         radius -= offset
31         # radius += offset
32 
33     hideturtle()
34     done()
35 
36 
37 main()

 

运行截图

答:通过半径由小到大填色回覆盖前一填色,无法获得彩色同心圆。

 

task3_1

实验源码

 1 from turtle import *
 2 
 3 
 4 def square(size=50, rgb='pink'):
 5     pencolor(rgb)
 6     for i in range(4):
 7         fd(size)
 8         left(90)
 9 
10 
11 def main():
12     setup(800, 600)
13     speed(0)
14 
15     n = 3
16     for i in range(n):
17         square(80)
18         left(360/n)
19 
20     hideturtle()
21     done()
22 
23 
24 main()

 

运行截图

 

 

 

task3_2

实验源码

 1 from turtle import *
 2 
 3 
 4 setup(800, 600)
 5 pencolor('pink')
 6 
 7 n = 4
 8 for i in range(n):
 9     for j in range(2):
10         circle(80, 90)
11         left(90)
12 
13     right(360/n)
14     # left(360/n)
15 
16 hideturtle()
17 done()

 

运行截图

 

 

 

 

 task4

实验源码

 1 from turtle import *
 2 
 3 setup(800, 600)
 4 bgcolor('black')
 5 pencolor('white')
 6 speed(0)
 7 
 8 angle = 0
 9 size = 2
10 
11 n = 4
12 count = 100
13 for i in range(count):
14     fd(size)
15     angle += 360/n + 1
16     seth(angle)
17     size += 5
18 
19 hideturtle()
20 done()

 

运行截图

 

 

 task5_1

实验源码

 1 from turtle import *
 2 
 3 
 4 def moveto(x, y):
 5     penup()
 6     goto(x, y)
 7     pendown()
 8 
 9 
10 def square(size):
11     for i in range(4):
12         fd(size)
13         left(90)
14 
15 
16 def main():
17     moveto(-100, -100)
18     color('black')
19 
20     begin_fill()
21     square(200)
22     end_fill()
23 
24     moveto(0, -100)
25     color('red')
26 
27     begin_fill()
28     circle(100, steps=4)
29     end_fill()
30 
31     hideturtle()
32     done()
33 
34 
35 main()

 

运行截图

 

task5_2

实验源码

 1 from turtle import *
 2 
 3 size = 40
 4 n = 5
 5 pencolor('blue')
 6 pensize(2)
 7 for i in range(n):
 8     goto(size, 0)
 9     seth(90)
10     circle(size, 90)
11     goto(0, 0)
12     seth(0)
13     size += 20
14 
15 hideturtle()
16 done()

 

运行截图

 task6_1

实验源码

 1 from turtle import*
 2 from random import random
 3 
 4 
 5 def moveto(x, y):
 6     penup()
 7     goto(x, y)
 8     pendown()
 9 
10 
11 def rect(wide=20, high=50):
12     for i in range(2):
13         fd(wide)
14         left(90)
15         fd(high)
16         left(90)
17 
18 def gen_color():
19     return tuple(random() for i in range(3))
20 
21 
22 def main():
23     setup(800, 600)
24     start = -200
25     offset = 20
26     for i in range(20):
27         moveto(start, 0)
28         color(gen_color())
29 
30         begin_fill()
31         rect()
32         end_fill()
33 
34         start += offset
35 
36     hideturtle()
37     done()
38 
39 
40 main()

 

运行截图

 task7

实验源码

 1 from matplotlib import pyplot as plt
 2 
 3 def func(x):
 4     return 4*x*(1-x)
 5 
 6 
 7 def gen_lst(x, n):
 8     ans = []
 9     for i in range(n):
10         t = func(x)
11         ans.append(t)
12         x = t
13     return ans
14 
15 
16 def main():
17     n = 30
18     lst1 = gen_lst(0.2, n)
19     lst2 = gen_lst(0.2000001, n)
20     x = list(range(1, 31))
21     plt.plot(x, lst1, 'ro-', x, lst2, 'bs-')
22     plt.xticks(list(range(1, 31, 4)))
23     plt.legend(['x = 0.2', 'x = 0.2000001'])
24     plt.show()
25 
26 
27 main()

 

运行截图