lesson7 纸飞机&直方图

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()
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值