开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情
2.1深入理解Python语言
2017- 人工智能时代 人类的问题
在这之间缓冲的"新计算时代"
2008-2016 复杂信息系统时代 数据问题
1981-2002 网络和视窗时代 交互问题
1946-1981 计算机系统结构时代 计算能力问题
不同编程语言的初心和适用对象
c
-学习内容:指针,内存,数据类型
-语言本质:理解计算机系统结构
-解决问题:性能
java
-学习内容:对象,跨平台,运行时
-语言本质:理解主客体关系
-解决问题:跨平台
-适用对象:软件类专业
c++
-学习内容:对象,多态,继承
-语言本质:理解主客体关系
-解决问题:大规模程序(比如操作系统)
VB
-学习内容:对象,按钮,文本框
-语言本质:理解交互逻辑
-解决问题:桌面应用
Python
-学习内容:编程逻辑,第三方库
-语言本质:理解问题求解
-解决问题:各类问题
Python语言的特点
Python语言是:通用语言、脚本语言、开源语言、跨平台语言、多模型语言
Python语言的特点与优势:
-
强制可读性
-
较少的底层语法元素
-
多种编程方式
-
支持中文字符
-
C代码量的10%(语法简洁)
-
生态高产(有13万第三方库)
- 快速增长的计算生态
- 避免重复造轮子
- 开放共享
- 跨操作系统平台
C/C++:Python归Python,C归C
Java:针对特定开发和岗位需求
HTML/CSS/JS:不可替代的前端技术,全栈能力
其他语言:R/Go/Matlab等,特定领域
编程语言的种类
机器语言
- 一种二进制语言,直接使用二进制代码表达指令
- 计算机硬件(CPU)可以直接执行,与具体CPU型号有关
- 完成2+3功能的机器语言
汇编语言
- 一种将二进制代码直接对应助记符的编程语言
- 汇编语言与CPU型号有关,程序不通用,需要汇编器转换
- 完成2+3功能的汇编语言(比如add,2,3,result的意思就是将第一参数2和第二参数3相加存到result里面)
高级语言
- 更接近自然语言,同时更容易描述计算问题
- 高级语言代码与具体CPU型号无关,编译后运行
- 完成2+3功能的高级语言(result = 2 + 3)
超级语言
- 粘性整合已有程序,具有庞大计算生态。可以很容易利用已有代码功能
- 编程思维不再是刀耕火种,而是集成开发
- 完成2+3功能的高级语言:result = sum(2,3)。只要传值进去就能出结果,不需要考虑中间的过程
2.2实例:Python蟒蛇绘制
-
用程序绘制一条蟒蛇
-
问题1:计算机绘图是什么原理?
- 一段程序为何能够产生窗体?为何能在窗体上绘制图形?
-
问题2:Python蟒蛇绘制从哪里开始呢?
- 如何绘制一条线?如何绘制一个弧形?如何绘制一个蟒蛇
-
代码演示
#PythonDraw.py
import turtle#引入了一个绘图库,名叫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模块1:turtle库的使用
turtle库基本介绍
-
turtle(海龟)库是turtle绘图体系的Python实现
- turtle绘图体系:1969年诞生,主要用于程序设计入门
- Python语言的标准库之一
- 入门级的图形绘制函数库
-
标准库
- Python计算生态 = 标准库 + 第三方库
- 标准库:随解释器直接安装到操作系统中的功能模块
- 第三方库:需要经过安装才能使用的功能模块
- 库Library、包Package、模块Module,统称模块
-
turtle原理
- turtle(海龟)是一种真实的存在
- 有一只海龟iu,其实在窗体正中心,在画布上游走
- 走过的轨迹形成了绘制的图形
- 海龟由程序控制,可以变换颜色,改变宽度等
turtle绘图窗体布局
-
turtle的绘图窗体
- 是turtle的一个画布,最小单位是像素
-
turtle.setup(width,height,startx,starty)#窗体的宽度,高度,起始点的x、y坐标(相对于屏幕边缘的坐标)。后两参数可选 -setup()设置窗体大小及位置 -setup()函数不是必须的 后两个参数只是决定窗体出现在你屏幕中的哪个位置,如果不设置默认位于屏幕正中间
turtle空间坐标体系
-
绝对坐标
- 原点位于窗体正中间,形成一个xy坐标系
-
turtle.goto(x,y)#让在任何位置的海龟(无论在哪里)到达某个位置 #到达那个位置形成的是一条直线
-
海龟坐标
-
1. 上:左侧方向 2. 下:右侧方向 3. 左:后退方向——>turtle.bk(d)#向海龟的反方向运行 4. 右:前进方向——>turtle.fd(d)#向海龟的正前方向运行 turtle.circle(r,angle)#以海龟当前位置左侧的某一个点为圆心进行曲线运行
-
turtle角度坐标体系
-
绝对角度
- 上:90/-270度
- 下:270/-90度
- 左:180/-180度
- 右:0/360度
-
seth(angle)改变海龟的行进方向
- 只改变方向不行进
- 参数angle为绝对度数
-
海龟角度
- 上:turtle.left(angle)
- 下:turtle.right(angle)
RGB色彩体系
-
是由三种颜色构成的万物色
- PGB指红蓝去三个通道的颜色组合
- 覆盖视力能感知的所有颜色RGB每色取值范围0-255整数或0-1小数
- turtle默认采用RGB的小数值来表示颜色,我们也可以手动切换到整数值表示
-
turtle.colormode(mode)#这是切换颜色表现形式的,mode为下方要填入的数值 -1.0:RGB小数值模式 -255:RGB整数值模式
2.4turtle程序语法元素分析
-库引用与import
-
扩充Python程序功能的方式
-
使用import保留字完成,采用.()编码风格
- import<库名>
- <库名>.<函数名>(<函数参数>)来调用相关功能
-
-
import更多用法
-
使用from和import保留字共同完成
- from<库名>import<函数名>
- from<库名>import* 使用这中方法后就可以直接使用函数名加函数参数了,不需要再每个都加上库的名字
- <函数名>(<函数参数>)
-
使用import和as保留字共同完成(推荐)
- import<库名> as <库别名>
- <库别名>.<函数名>(<函数参数>)
- 给调用的外部库关联一个更短、更适合自己的名字
-
-turtle画笔控制函数
-
画笔操作后一直有效,一般成对出现
-
turtle.penup() 别名 turtle.pu()
- 抬起画笔的意思,海龟在飞行
-
turtle.pendown 别名 turtle.pd()
- 落下画笔,海龟在爬行
-
turtle.pensize(width) 别名 turtle.width(width)
- 画笔宽度,海龟的腰围
-
turtle.pencolor(color) color为颜色字符串或者r,g,b值
-
画笔颜色,海龟的涂装
-
pencolor(color)的color有3种形式
- 颜色字符串: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)
- 向前行进,海龟走直线
- d:行进距离,可以为负数
-
turtle.circle(r,extent=None)
- 根据半径r绘制extent角度的弧形
- r:默认圆心在海龟左侧r距离的位置(半径)
- extent:绘制角度,默认是360度整圆(旋转角度)
-
-turtle方向控制函数
-
控制海龟面对方向:绝对角度&海龟角度
-
turtle.setheading(angle) 别名 turtle.seth(angle)
- 改变行进的方向,海龟走角度
- angle:改变行进的方向,海龟走角度
-
turtle.left(angle)海龟向左转 这是海龟角度,上面那个是绝对角度
- turtle.right(angle)海龟右转
- angle:旋转的角度
-
基本循环语句
循环语句与range函数
-
按照一定次数循环执行一组语句
-
for <变量> in range(<参数>) <被循环执行的语句> --<变量>表示每次循环的计数,0-<次数>-1 例如>>>>for i in range(5): print(i)#打印出来就是0 1 2 3 4 例如>>>>for i in range(5): print("鱼皮说:"i) #打印出来就是 #鱼皮说:0 #鱼皮说:1 #鱼皮说:2 #鱼皮说:3 #鱼皮说:4 -
range()函数
- 产生循环计数序列的函数
- --range(N):产生0到N-1的整数序列,共N个
- --range(M,N):产生M到N-1的整数序列,共N-M个