第二周
2.1深入理解Python语言
背景
1946 - 1981 计算机系统结构时代 计算能力问题
1981 - 2008 网络和视窗时代 交互问题
2008 - 2016 复杂信息系统时代 数据问题
新计算时代
2017 - 人工智能时代 人类自身问题
编程语言
- C ++诞生于计算机系统结构时代,用来写操作系统的语言++
-学习内容: 指针、内存、数据类型
-语言本质: 理解计算机系统结构
-解决问题: 性能
- JAVA ++诞生于网络和视窗时代++
-学习内容: 对象、跨平台、运行时
-语言本质: 理解程序设计过程中主体和客体之间的关系
-解决问题: 跨平台,程序交互问题
- C++ ++C语言的演进,具有面向对象的特点++
-学习内容: 对象、多态、继承
-语言本质: 理解主客体关系
-解决问题: 大规模程序
- VB(.NET)++诞生于网络视窗时代++
-学习内容: 对象、按钮、文本框
-语言本质: 理解人机之间交互逻辑
-解决问题: 桌面应用
- Python ++发展于复杂信息系统时代++
-学习内容: 编程逻辑、第三方库
-语言本质: 理解问题求解
-解决问题: 各类问题的计算部分的实现
2018年以后的计算环境
- 计算机性能不再是解决一般问题的瓶颈
- 移动互联网普及
- 计算需求增加
Python语言特点
(通用语言、脚本语言、开源语言、跨平台语言、多模型语言、粘性语言)
- 通用语言
可以用于普适的计算问题求解的开发
- 语法简洁
强制可读性;较少的底层语法元素;多种编程方式;支持中文字符
简洁意味着:
短的编程时间、少的调试工作量、良好的维护体验
缩短近10倍的代码量
- 生态高产
快速增长的计算生态,避免重复造轮子
提高10倍产出
如何看待Python
- 最高产
- 掌握抽象并求解计算问题综合能力的语言
- 解决复杂计算问题
超级语言
- 粘性整合已有程序,具有庞大计算生态
- 集成开发,复用
实例2:Python蟒蛇绘制
用程序绘制一条蟒蛇
问题分析:
-
计算机绘图是什么原理?
程序为何能产生窗体?为何能在窗体上绘制图形? -
Python蟒蛇绘制从哪里开始?
代码编写:
import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()
2.3海龟库turtle
- turtle库基本介绍
- turtle绘图窗体布局
- turtle空间坐标体系
- turtle角度坐标体系
- RGB色彩体系
turtle库概述
Python标准库之一
turtle的原理:
想象一只海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形
有点致敬logo语言的意思
turtle的绘图窗体
设置启动窗体的位置和大小
turtle.setup(width,height,startx,starty)
turtle的空间坐标体系
-
绝对坐标
turtle.goto(100,100)
-
海龟坐标
前进:turtle.fd(d)
后退:turtle.bk(d)
转弯:turtle.circle(r,angle)
turtle的角度坐标体系
-
绝对角度
turtle.seth(angle)
-
海龟角度
turtle.left(angle)
turtle.right(angle)
RGB色彩体系
turtle库默认采用小数来表示颜色,使用
turtle.colormode(mode)
-1.0:RGB小数值
-255:RGB整数值
来改变色彩数值模式
2.4 turtle程序语法元素分析
- 库引用与import
- turtle画笔控制函数
- turtle运动控制函数
- turtle方向控制函数
- 基本循环语句与range函数
库引用与import
- 库引用
- from <库名> import <函数名>
这样可以简化每一次都要写<库名>.<函数名>,直接使用函数名就可以了
- import <库名> as <库别名>
给调用的外部库,起一个更短更适合自己的名字
画笔控制函数
- penup()
又名turtle.pu(),画笔抬起,画笔运动轨迹不在画布上形成图案
- pendown()
又名turtle.pd(),画笔落下,画笔运动轨迹在画布上形成图案
- pencolor()
又名turtle.width()
- pensize()
可以用RGB值或者颜色字符串
颜色字符串:turtle.pencolor("purple")
RGB的小数值:turtle.pencolor(0.63,0.13,0.94)
RGB的元组值:turtle.pencolor((0.63,0.13,0.94))
turtle运动控制函数
控制海龟行进:走直线&走曲线
走直线:turtle.forword(d) / turtle.fd(d)
走曲线:turtle.circle(r,extent =None)
半径为r,角度extent
默认情况圆心在海龟前进方向左侧r距离处
turtle方向控制函数
控制海龟面对的方向
绝对角度:
turtle.setheading(angle) / turtle.seth(angle)
海龟角度:
turtle.left(angle)
turtle.right(angle)
循环语句与range()函数
循环结构:
for <变量> in range(<循环次数>)
变量从 0 到 range - 1 次循环
range()函数:
产生循环计数序列
range(N):产生 0 到 N - 1,共N个
range(M,N):产生 M 到 N - 1,共N-M个