lesson7 纸飞机&直方图
1.课堂内容
1.打包法纸飞机
2.数据驱动纸飞机
3.数据驱动直方图
2.知识点
数据驱动的方法编程
len() #len()函数用来计算列表中元素个数
3.课后作业
1.作业1(数据驱动纸飞机)
#----------导入库----------
import turtle as t
#----------
tril_1 = [[-300,150],[-125,-125],[-50,-50]]#左边三角形的二维列表
tril_2 = [[0,0],[100,50],[-300,150]]#右边三角形的二维列表
tril_3 = [[-50,-50],[-85,-85],[-30,-125]]#小三角形的二维列表
line_1 = [[0,0],[-30,-125]]#连接线1的二维列表
line_2 = [[-80,-125],[120,-200]]#尾迹1的二维列表
line_3 = [[10,-80],[100,-150]]#尾迹2的二维列表
line_4 = [[50,-5],[250,-30]]#尾迹3的二维列表
line_5 = [[75,25],[200,0]]#尾迹4的二维列表
#-----------定义子函数-----------
#画三角形
def draw_tri(x1,y1,x2,y2,x3,y3):
t.color("black","blue")
t.pensize(5)
t.penup()
t.goto(x1,y1)
t.pendown()
t.begin_fill()
t.goto(x2,y2)
t.goto(x3,y3)
t.goto(x1,y1)
t.end_fill()
#画线段
def draw_line(x1,y1,x2,y2,s):
t.pensize(s)
t.penup()
t.goto(x1,y1)
t.pendown()
t.goto(x2,y2)
#--------------主函数-----------------
#调用子函数
t.hideturtle()
draw_tri(tril_1[0][0],tril_1[0][1],tril_1[1][0],tril_1[1][1],tril_1[2][0],tril_1[2][1])#画左边的三角形
draw_tri(tril_2[0][0],tril_2[0][1],tril_2[1][0],tril_2[1][1],tril_2[2][0],tril_2[2][1])#画右边的三角形
draw_tri(tril_3[0][0],tril_3[0][1],tril_3[1][0],tril_3[1][1],tril_3[2][0],tril_3[2][1])#画小三角形
draw_line(line_1[0][0],line_1[0][1],line_1[1][0],line_1[1][1],3)#画连接线
draw_line(line_2[0][0],line_2[0][1],line_2[1][0],line_2[1][1],1)#画尾迹1
draw_line(line_3[0][0],line_3[0][1],line_3[1][0],line_3[1][1],1)#画尾迹2
draw_line(line_4[0][0],line_4[0][1],line_4[1][0],line_4[1][1],1)#画尾迹3
draw_line(line_5[0][0],line_5[0][1],line_5[1][0],line_5[1][1],1)#画尾迹4
#点击窗口关闭程序
window = t.Screen()
window.exitonclick()
2.作业2(填充画法直方图)
#---------------载入库-------------
import turtle as t #更简洁的调用turtle库
#---------------驱动数据---------------
ls = [[5,69],[10,292],[13,33],[10,131],[8,61],[12,254],[10,131]]#创建数据的二维列表
X_len = 400
Y_len = 300
x0 = -200
y0 = -100
t.speed(0)
#--------------画坐标轴----------
t.hideturtle()
t.penup()
t.goto(x0,y0+Y_len) #从y轴上端开始画
t.pendown()
t.setheading(-90) #设置笔方向为向下
t.forward(Y_len)
t.left(90)
t.forward(X_len)
#----------------画直方图-----------
t.color('red','red')
for i in range(len(ls)): #在ls列表元素个数中循环
t.penup() #提笔
x = x0 + (i+1) * 50
y = y0
t.goto(x,y) #从每个长方形的左下角开始画:x0+偏移量,y0
t.setheading(90) #设置笔方向为向上
t.pensize(1)
t.pendown() #放下笔
t.begin_fill()
for j in range(2):
t.forward(ls[i][1]) #表示向上的线条长度
t.left(90)
t.forward(ls[i][0])
t.left(90)
t.end_fill()
t.penup() #提笔
x += 1
t.goto(x,y)
#程序运行完毕点击窗口关闭
window = t.Screen()
window.exitonclick()
3.作业3(描线画法直方图)
#---------------载入库-------------
import turtle as t #更简洁的调用turtle库
#---------------驱动数据---------------
ls = [[5,69],[10,292],[13,33],[10,131],[8,61],[12,254],[10,131]]#创建数据的二维列表
X_len = 400
Y_len = 300
x0 = -200
y0 = -100
t.speed(0)
#--------------画坐标轴----------
t.hideturtle()
t.penup()
t.goto(x0,y0+Y_len) #从y轴上端开始画
t.pendown()
t.setheading(-90) #设置笔方向为向下
t.forward(Y_len)
t.left(90)
t.forward(X_len)
#----------------画直方图-----------
t.color('red')
for i in range(len(ls)): #在ls列表元素个数中循环
t.penup() #提笔
x = x0 + (i+1) * 50
y = y0
t.goto(x,y) #从每个长方形的左下角开始画:x0+偏移量,y0
t.setheading(90) #设置笔方向为向上
t.pensize(1)
for j in range(ls[i][0]):#画长方形的宽度的数量的线条
t.pendown() #放下笔
t.forward(ls[i][1]) #表示向上的线条长度
t.penup() #提笔
x += 1
t.goto(x,y)
#程序运行完毕点击窗口关闭
window = t.Screen()
window.exitonclick()
4.作业4(数据驱动国旗)
#------------载入库------------
import turtle as t
#------------驱动数据-----------
t.speed(0)
t.hideturtle()
x0 = -150
y0 = -100
flag = [300,200] #国旗的长,宽
star_long = [60,20,20,20,20] #星星的长度
angle = [0,45,30,0,45]#星星的角度
x = [x0+20,x0+90,x0+110,x0+110,x0+92]
y = [y0+160,y0+175,y0+158,y0+133,y0+105]
#旗面
t.setheading(0)
t.penup()
t.goto(x0,y0)
t.pendown()
t.begin_fill()
t.color("red","red")
for i in range(2):
t.forward(flag[0])#画国旗的长
t.left(90)
t.forward(flag[1])#画国旗的宽
t.left(90)
t.end_fill()
#星星
for i in range(5):
t.setheading(angle[i])
t.penup()
t.goto(x[i],y[i])
t.pendown()
t.begin_fill()
t.color("yellow","yellow")
for j in range(5):
t.forward(star_long[i])
t.right(144)
t.end_fill()