加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

python编程入门课之turtle绘图

(2022-07-08 15:39:07)
分类: 研究-学习
python编程课
两个点入手: 入门、趣味
准备从turtle绘图和与结合数学知识编程入手。

turtle艺术编程、九章视频号及童晶老师视频号

数学知识可分为简单的如质数、绘制函数图形等入手;高阶的如二分法求多元方程的解等。


北大陈斌《python艺术编程》
第一课
python 艺术 编程
python:一种应用最广泛的程序设计语言
通过程序表达图形创意
从零基础开始学习入门级编程
建立基本的算法能力
(双鱼图、彩球 玫瑰花等图案)


需要的基本知识:
算术:四则运算、余数、平方、开平方
代数:多项式、方程式、函数
几何:点、直线、圆弧、多边形、直角坐标、角度方向

计算机:键盘输入、鼠标操作、文件和目录操作、浏览网页

什么是程序?
按照固定的步骤完成一个任务叫“程序”
生活中处处是程序
作息时间、烘焙、乐谱(顺序、重复、分情形)

计算机程序设计语言:
按照固定的步骤让计算机完成一个任务就是计算机程序
分为顺序、重复、分情形
指挥计算机完成任务需要讲计算机能懂的语言
“方言众多,各有偏重”
python最平易近人的计算机程序设计语言
功能强大、应用广泛

python长什么样子?
#1、导入海龟模块
import turtle

#2、生成一只海龟,做一些设定
t=turtle.Turtle()
t.pencolor('blue')
t.pensize(3)

#3、用海龟作图
for i in range(5):
   t.forward(50)
   t.right(144)

#4、结束作图
t.hideturtle()
turtle.done()

从上到下的顺序
每行一条语句
没有作用的行
    空行
    带#的注释
左对齐
缩进

熟悉python编程环境
编程流程:输入代码--保存代码文件--运行代码
直接在网页编程
http://pyln.fun/
http://console.basthon.fr/
在线编程(北大附中创意编程python)

建议安装thonny编辑器 https://thonny.org


书写python代码注意点:
字母、数字和符号不能错、漏
空格、空行和注释一般无所谓
字母大小写区分【按住键盘上的shift】
符号一定是英文符号
上下对齐和缩进不能马虎
代码编辑器会帮助你对齐和缩进

作业1:抄写“五角星”代码
绘制一个蓝色五角星
可以试试修改程序:
换种颜色? 改变大小?改变笔道粗细?笔改成别的形状?

作业2:抄写“随便点单”代码
特别注意标点符号
 引号内外有区别
可以尝试修改:
随便甜品店? 随便外卖?一次上两个随便?两位客人的随便点单?

import random
random.seed()
menu=['咖啡','红茶','可乐','牛奶','矿泉水']
print('随便水吧,专治选择困难症!')
print('我们有:',menu)
name=input(" 请问怎么称呼?")
drink=random.choice(menu)
print(name,"您好,随便上了一杯",drink)

============================

lesson2
海龟作图基本指令
绘制简单线划图

海龟作图:turtle
模拟海龟在沙滩上爬行所描绘的轨迹【坐标】
  从LOGO语言借鉴而来
几个基本要素:
  位置:缺省坐标系(-300,-300,300,300) (600*600)
  朝向:绝对的角度,正东为0度,逆时针方向增加

  转动:相对的角度,左转,右转;(left,right)
  运动:前进/后退的距离 (forward,backword)
  颜色:名称表示和RGB表示两种(pencolor)
  轨迹宽度:爬行轨迹的尺寸(pensize)

【逐条描述】
forward(100)
left(120)[如何计算而来]
forward(100)
left(120)
forward(100)
left(120)

作图程序模板
首先,导入turtle模块
然后,生成一只海龟
  做一些初始化设定
程序主题:用作图语句绘图
最后结束作图:
  可选择隐藏海龟 t.hideturtle()
 保留第1、4部分不变,修改第2、3部分

#1.导入海龟模块
import turtle

#2.生成一只海龟,做一些设定
t=turtle.Turtle()  
t.pencolor('red')  #画笔颜色
t.pensize(3)   #画笔粗细

#3.用海龟作图
for i in range(5):
   t.forward(50)
   t.right(144)

#4.结束作图
t.hideturtle()
turtle.done()


在线编程地址:pyln.fun/p/new


课堂练习1
绘制一个蓝色的等边三角形

课堂练习2
绘制一个绿色晶体 ()食盐的晶体是立方体
自己计算角度,确定边长
【分解 外部正六边形;起笔位置的确定;不能一笔画完,可以重复】

课堂练习3
绘制一个不可能三角形
颜色自定
【角度分析,边长】

更多图形
钻石、小房子、松树

===========================================
lesson3
绝对定位:goto,setheading[之前的前进后退左转右转是相对的位置]
抬笔落笔:penup,pendown
画圆 circle
填充颜色 fillcolor begin_fill end_fill

新功能:直接设置位置goto/朝向setheading
goto(x,y) 海龟直接去到制定的坐标

setheading(角度)
直接设定海龟的朝向 0度是正东方向,逆时针为正方向

新功能:抬笔落笔【画八卦之一  水】
抬笔 penup()
落笔 pendown()


新功能 :画圆
circle(半径) #画一个指定半径的圆

t.circle(50)
circle(半径,角度) # 画一个制定半径、角度的圆弧

circle(半径,角度,边数)#制定边数的话,那就是正多边形

其中半径和角度都可以是负数,看看是什么效果。


半径正数 不断左转,负数,不断右转

新功能:填充颜色
成组使用
设置填充颜色 fillcolor(颜色)
开始填充 begin_fill()
(中间绘制图形)
结束填充end_fill()

课堂练习1:
绘制一个三角警示牌

课堂练习2:
绘制一个太极图(双鱼图)
练习三
电源开关、禁止停车、三叶草 图钉
------------------------
# 3. 用海龟作图
t.pencolor('red')
t.fillcolor('green')
t.begin_fill()
for i in range(4):
    t.forward(100)
    t.right(90)
t.end_fill()

-------------------------

三角警示牌
import turtle

t=turtle.Turtle()  
t.pensize(10)   #画笔粗细

t.fillcolor('yellow')
t.begin_fill()
for i in range(3):
    t.forward(200)
    t.left(120)
t.end_fill()

t.penup()
t.goto(100,20)
t.pencolor('black')
t.pensize(2) 
t.pendown()
t.fillcolor('black')
t.begin_fill()
t.circle(10)
t.end_fill()

t.begin_fill()
t.penup()
t.goto(88,120)
t.pendown()
t.setheading(90)
t.circle(-12,180)
t.goto(100,50)
t.goto(88,120)
t.end_fill()

t.hideturtle()
turtle.done()



====
同样的形状,可以用不同的代码来实现。



============lesson4 复杂图形的分解
抬笔
  penup()
落笔
  pendown()
【绘制之前使用】
括号不能省略,pu()  pd() 缩写

加快绘制速度
  speed(0)

实例演示
画不连续的线段
forward()
penup()
forward()
pendown()
forward()

---------------
复杂图形的绘制:分解与重复

分解区域
识别边界
确定顺序
学习绘图:
1、救生圈(四种颜色)
2、类似海浪的复杂图形  彩色标志【要点,从何处开始】

练习1:红心【分解 正方形加两个半圆】
练习2:彩色风车


===========================
lesson5
重复操作:for循环语句

需要确定重复的一系列操作
以及
重复的次数

for i in range(3):
    t.forward(100)
    t.left(120)

用循环语句的观点分解图形
正五边形
正六角星

循环可以嵌套
循环体可以是循环语句
双重循环、三重循环……
外层循环变量、外层循环次数

for i in range(4):
   for j in range(3):
      t.forward(100)
      t.left(120)
   t.left(90)

双重循环


作业1:用循环实现 正五边形  六角星 邮政编码框
 


===================
lesson6
循环变量、write函数、range函数、用变量来作变化的图

变量
for 循环语句中有一个成分“循环变量”是可以自由命令的
循环变量名不影响循环的次数
它的作用

新功能:write函数
write函数可以让海龟在画布上写字
 数值、文字、和变量内容
for i in range(10):
    t.write(i)
    t.forward(20)
t.write函数被执行了10次
每次循环,循环变量i都会变成不同的数值
range(10)就是一组连续的10个数
每次循环从这组数中按照顺序抽一个出来


range函数
range函数会给一个等差数列,有三种形式

range(n):从0 到n-1,一共n个整数  [0,n)

range(b,e):从b到e-1,一共e-b个整数

range(b,e,s)【s-step 步长】

尝试产生[5,6,7,8,9] 和[10,20,30,40,50]

我们可以用变量画出一些变化的图案
贝壳

write是个好东西,但是字号太小
write(v,move=,align=,font=)

for i in range(10,41,10):
    t.write("a",move=True,font=('serif',i,'italic bold'))

t.goto(100,200)
t.write('Python艺术编程',font=('fantasy',20,'normal'))
t.goto(-300,200)
t.write('Python艺术编程',font=('sans',40,'normal'))


作业1:
21世纪的所有闰年
设计一个程序,打印出21世纪所有的闰年
【提示:从2000年开始,用range函数产生21世纪所有闰年】
import turtle as t
t.penup()
t.color('green')
a=0
c=250
t.goto(-250,c)
for i in range(2000,2100):
    if (i % 400 == 0) or(i % 4 ==0 and i % 100 != 0):
        a=a+1
        t.write(i)
        t.forward(30)
        if a ==0:
            c=c-30
            t.goto(-250,c)

t.hideturtle()
t.done()
【range(2000,2100,4)】
作业 2:
绘制一个刻度尺

作业3:贝壳
作业4:走廊(大小不同的正方形)
作业5 蛋糕圈



=========================================================
陈老师的课小结:
第一节课:
入门课,了解什么是程序;程序的三种基本结构(顺序、重复、分情况。可以举生活中的例子:作息时间表、制作食品的流程表、唱歌歌词-重复-分情形)
了解python作为一门编程语言,它的基本形式,如空行、注释语句、缩进、大小写字母、英文标点符号等。通过让学生原原本本抄写代码体验python编程的基本流程。

第二节课:
海龟作图的基本指令:(LOGO语言,turtle 画线条的小海龟)
基本要素: 位置(坐标,X轴和Y轴,正负数,数值范围);方向(默认方向为正东方向,0°) ;运动(前进forward(像素) 后退backward(像素));转动(左转left(角度)右转(角度))
有了这个知识可以画什么形状呢?
from turtle import *
shape('turtle')
color('green')
speed(1)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
hideturtle()
done()

如何画一个三角形/五边形/六边形呢?

如何画一个五角星呢?

除了这些基本图形,你还可以画什么呢?
松树、钻石、房子图案??











0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有