实验任务1
#task1_1
源码
1 from turtle import * 2 3 def move(x,y): #将画笔移到坐标(x, y)处 4 penup() 5 goto(x,y) 6 pendown() 7 8 def draw(n, size = 100): #绘制边长为size的正n边形 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(0, 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): #将画笔移到坐标(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()
运行测试截图
实验任务2
#task2_1
源码
1 '''以(0, 0)为圆心,绘制9个同心圆''' 2 3 from turtle import * 4 5 def moveto(x ,y): #把画笔移到坐标(x, y)处 6 penup() 7 goto(x, y) 8 pendown() 9 10 def main(): 11 setup(800, 600) 12 13 radius = 20 #圆初始半径 14 offset = 20 #同心圆每次位移 15 16 for i in range(9): 17 moveto(0, -radius) 18 circle(radius) 19 radius += offset 20 21 hideturtle() 22 done() 23 24 main()
运行测试截图
#task2_2
源码
1 '''以(0, 0)为圆心,绘制9个彩色同心圆,色彩随机生成''' 2 3 from turtle import * 4 from random import random 5 6 def moveto(x, y): #把画笔移至坐标(x, y)处 7 penup() 8 goto(x, y) 9 pendown() 10 11 def gen_color(): #生成一个以rgb三元组表示的颜色值并返回 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 28 radius -= offset 29 30 hideturtle() 31 done() 32 33 main()
运行测试截图
实验结论
如果绘制同心圆时,半径从小到大绘制,不能实现题目要求。因为半径无论是从小到大或者从大到小,图形都是在前面绘制基础上进一步绘制,即会覆盖在上面。当半径由小变大时,
后续绘制的较大半径圆会直接完全覆盖原本半径较小圆,导致最后显示结果中只能看到一个最大圆。
实验任务3
#task3_1
源码
1 from turtle import * 2 3 def square(size = 50, rgb = 'pink'): 4 ''' 5 绘制正方形 6 :para: size:int 指定边长(如未指定参数,使用默认值) 7 :para: c: str 指定画笔颜色值(如未指定参数,使用默认值) 8 ''' 9 10 pencolor('orange') 11 for i in range(4): 12 fd(size) 13 left(90) 14 15 def main(): 16 setup(800, 600) 17 speed(0) 18 19 n = 10 20 for i in range(n): 21 square(80) 22 left(360/n) 23 24 hideturtle() 25 done() 26 27 main()
运行测试截图
#task3_2
源码
1 from turtle import * 2 3 setup(800, 600) 4 pencolor('pink') 5 6 n = 10 7 for i in range(n): 8 for j in range(2): 9 circle(80, 90) 10 left(90) 11 12 right(360/n) 13 14 hideturtle() 15 done()
运行测试截图
实验任务4
#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 = 5 12 count = 50 13 for i in range(count): 14 fd(size) 15 angle = 360/n 16 left(angle) 17 size += 5 18 19 hideturtle() 20 done()
运行测试截图
实验任务5
#task5_1
源码
1 from turtle import * 2 3 def moveto(x ,y): 4 penup() 5 goto(x, y) 6 pendown() 7 8 moveto(-100, -100) 9 color('black') 10 begin_fill() 11 for i in range(4): 12 fd(200) 13 left(90) 14 end_fill() 15 16 moveto(0, -100) 17 color('red') 18 left(45) 19 begin_fill() 20 pencolor('red') 21 for i in range(4): 22 fd(141.4) 23 left(90) 24 end_fill() 25 26 hideturtle() 27 done()
运行测试截图
#task5_2
源码
1 from turtle import * 2 pensize(2) 3 pencolor('blue') 4 radius = 40 5 for i in range(1,6): 6 fd(radius) 7 left(90) 8 circle(radius, 90) 9 left(90) 10 fd(radius) 11 left(90) 12 radius += 20 13 14 hideturtle() 15 done()
运行测试截图
实验任务6
#task6
源码
1 from turtle import * 2 pensize(2) 3 bgcolor('black') 4 color('yellow') 5 radius = 200 6 def moveto(x, y): 7 penup() 8 goto(x, y) 9 pendown() 10 11 begin_fill() 12 left(45) 13 fd(radius) 14 left(90) 15 circle(radius, 270) 16 left(90) 17 fd(radius) 18 end_fill() 19 20 21 moveto(15,120) 22 color('black') 23 begin_fill() 24 circle(20) 25 end_fill() 26 27 moveto(-5,115) 28 begin_fill() 29 color('white') 30 circle(5) 31 end_fill() 32 33 hideturtle() 34 done()
运行测试截图
实验任务7
#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()
运行测试截图
实验任务8
#task8
源码
1 import jieba 2 from wordcloud import WordCloud 3 from matplotlib import pyplot as plt 4 5 text = '''requests是一个常用的HTTP请求库,可以方便地向网站发送HTTP请求,并获取响应结果。 6 Scrapy是一个开源和协作框架,用于从网站中提取数据,是最流行的爬虫框架。 7 SciPy是一个开源的Python算法库和数学工具包,它基于Numpy,用于数学、科学、工程学等领域。''' 8 9 word = jieba.lcut(text) 10 11 t = ' '.join(word) 12 t_wc = WordCloud(font_path = 'msyh.ttc').generate(t) 13 t_wc.to_file('wordcloud.png') 14 15 plt.imshow(t_wc) 16 plt.axis('off') 17 plt.show()
运行测试截图