实验六 turtle绘图与python库的运用
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 """ 2 f(x) = 4x(1-x) 3 f(0.2)vsf(0.2000001) 4 """ 5 6 from matplotlib import pyplot as plt 7 8 9 def func(x): 10 return 4*x*(1-x) 11 12 13 def gen_lst(x, n): 14 ans = [] 15 for i in range(n): 16 t = func(x) 17 ans.append(t) 18 x = t 19 return ans 20 21 22 def main(): 23 n = 30 24 25 lst1 = gen_lst(0.2, n) 26 lst2 = gen_lst(0.2000001, n) 27 28 x = list(range(1, 31)) 29 plt.plot(x, lst1, 'ro-', x, lst2, 'bs-') 30 plt.xticks(list(range(1, 31, 4))) 31 plt.legend(['x = 0.2', 'x = 0.2000001']) 32 plt.show() 33 34 35 main()
运行截图

task8
实验源码
1 import jieba 2 from wordcloud import WordCloud 3 from matplotlib import pyplot as plt 4 5 6 text = '''requests是一个常用的HTTP请求库,可以方便地向网站发送HTTP请求,并获取响应结 7 果。 8 Scrapy是一个开源和协作框架,用于从网站中提取数据,是最流行的爬虫框架。 9 SciPy是一个开源的Python算法库和数学工具包,它基于Numpy,用于数学、科学、工程学等领 10 域。''' 11 12 word = jieba.lcut(text) 13 14 t = ' '.join(word) 15 t_wc = WordCloud(font_path='msyh.ttc').generate(t) 16 t_wc.to_file('wordcloud.png') 17 18 plt.imshow(t_wc) 19 plt.axis('off') 20 plt.show()
运行截图


浙公网安备 33010602011771号