turtle初体验+第三方库使用

发布时间 2023-06-12 12:27:15作者: 柠七拧巴

task1

task1_1

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

结果:

task1_2

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

结果:

task2

task2_1

 1 from turtle import *
 2 
 3 def moveto(x, y):
 4     penup()
 5     goto(x, y)
 6     pendown()
 7 
 8 def main():
 9     setup(800, 600)
10 
11     radius = 20     #圆初始半径
12     offset = 20     #同心圆每次位移量
13 
14     for i in range(9):
15         moveto(0, - radius)
16         circle(radius)
17         radius += offset
18 
19     hideturtle()
20     done()
21 
22 main()

结果

task2_2

 1 from turtle import *
 2 from random import random
 3 
 4 speed(0)
 5 
 6 def moveto(x, y):
 7     penup()
 8     goto(x, y)
 9     pendown()
10 
11 def gen_color():
12     return tuple(random() for i in range(3))
13 
14 def main():
15     setup(800, 600)     #设置画板尺寸大小
16 
17     radius = 180    #圆初始半径
18     offset = 20     #同心圆每次位移量
19 
20     for i in range(8):
21         moveto(0, -radius)
22         color(gen_color())
23 
24         begin_fill()
25         circle(radius)
26         end_fill()
27         hideturtle()
28 
29         radius -= offset
30 
31     hideturtle()
32     done()
33 main()

结果:

task3

task3_1

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

结果

task3_1_1

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

结果:

task3_2

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

结果:

task3_2_1

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

结果:

task4

task4_1

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

结果:

task4_2

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

结果;

 

task5

task5_1

 1 from turtle import *
 2 from math import *
 3 
 4 setup(800, 600)
 5 
 6 def moveto(x, y):
 7     penup()
 8     goto(x, y)
 9     pendown()
10 
11 def square(lenth, encolor, bccolor):
12     pencolor(encolor)
13     color(bccolor)
14     begin_fill()
15     for i in range(4):
16         fd(lenth)
17         left(90)
18     end_fill()
19 
20 def main():
21     moveto(-100, 0)
22     square(200, 'blue', 'pink')
23     moveto(0, 0)
24     left(45)
25     square(100*sqrt(2), 'blue', 'yellow')
26 
27     hideturtle()
28     done()
29 
30 main()

结果:

task5_2

from turtle import *

pencolor('pink')
pensize(5)
speed(0)
setup(800, 600)
radius = 20
offset = 20

n = 10
for i in range(n):
    fd(radius)
    left(90)
    circle(radius, 90)
    left(90)
    fd(radius)
    left(90)
    radius += offset

结果:

 

task6

 1 from turtle import *
 2 from random import random
 3 
 4 setup(800, 600)
 5 speed(0)
 6 pensize(4)
 7 
 8 def racolor():
 9     return tuple((random() for i in range(3)))
10 
11 def main():
12     n = 20
13     radius = 300
14     offset = 15
15     long = 30
16     for i in range(n):
17         color(racolor())
18         begin_fill()
19         fd(radius)
20         left(90)
21         fd(long)
22         left(90)
23         fd(radius)
24         left(90)
25         fd(long)
26         left(90)
27         radius -= offset
28         end_fill()
29 
30     hideturtle()
31     done()
32 
33 main()

结果;

 

task7

 1 '''
 2 f(x) = 4x(1-x)
 3 f(0.2) vs f(0.2000001)
 4 '''
 5 
 6 from matplotlib import pyplot as plt
 7 
 8 def func(x):
 9     return 4*x*(1-x)
10 
11 def gen_lst(x, n):
12     ans = []
13     for i in range(n):
14         t = func(x)
15         ans.append(t)
16         x = t
17     return ans
18 
19 def main():
20     n = 30
21 
22     lst1 = gen_lst(0.2, n)
23     lst2 = gen_lst(0.2000001, n)
24 
25     x = list(range(1, 31))
26     plt.plot(x, lst1, 'ro-', x, lst2, 'bs-')    #绘制折线图
27     plt.xticks(list(range(1, 31, 4)))           #设置x轴刻度
28     plt.legend(['x = 0.2', 'x = 0.2000001'])    #设置图例
29     plt.show()                                  #画出来
30 
31 main()

结果:

task8

 1 import jieba
 2 from wordcloud import WordCloud
 3 from matplotlib import pyplot as plt
 4 
 5 text = '''requests是一个常用的HTTP请求库,可以方便地向网站发送HTTP请求,并获取响应结
 6 果。
 7 Scrapy是一个开源和协作框架,用于从网站中提取数据,是最流行的爬虫框架。
 8 SciPy是一个开源的Python算法库和数学工具包,它基于Numpy,用于数学、科学、工程学等领
 9 域。'''
10 
11 word = jieba.lcut(text)     #使用jieba模块的函数lcut()对中文文本进行精确分词
12 
13 t = ' '.join(word)
14 t_wc = WordCloud(font_path = 'msyh.ttc').generate(t)    #创建wordcloud对象,使用其他方法generate()生成词云
15 t_wc.to_file('wordcloud.png')   #保存词云图片
16 
17 plt.imshow(t_wc)
18 plt.axis()
19 plt.show()

结果: