您的位置:首页 > 编程语言 > Python开发

【python】Python语言程序设计/嵩天老师入门课程笔记整理

2020-08-17 12:16 671 查看

分章节目录

  • 2、python绘图
  • 3、基本数据类型
  • 4、程序的控制结构
  • 5、函数和代码复用
  • 6、组合数据类型
  • 6.3字典类型及其操作
  • 6.4 jieba库概述
  • 7、文件和数据格式化
  • 7.3 wordcloud库的使用
  • 8、程序设计方法学
  • 1、python开发环境配置

    1.1 程序语言分类(执行方式):

    (1)静态语言:使用编译执行的编程语言 C、C++、java
    (2)脚本语言:使用解释执行的编程语言 python、PHP、javascript

    1.2 python程序语法元素分析:

    (1)缩进、注释、命名、变量、保留字
    (2)数据类型、字符串、整数、浮点数、列表
    (2)赋值语句、分支语句、函数

    1.3 python保留字

    2、python绘图

    2.1 编程语言概述

    C 理解计算机系统结构 性能 底层程序
    Java 理解主客体关系 面向对像 跨平台
    C++ 理解主客体关系 大规模程序 核心编程
    VB 理解交互逻辑(人机交互) 桌面应用
    Python 理解问题求解 各类问题 通用语言

    python优势:语法简洁、生态高产

    编程语言层级:机器语言、汇编语言、高级语言、超级语言(庞大生态)

    2.2 turtle库使用

    库引用
    import turtle 常用方式
    import turtle as t 更改库名
    from turtle import* 后续函数前无需库名

    常用函数
    setup(1000,1000,50,50) 长、宽、距屏幕左上角x、距屏幕左上角y
    fd(100) 前进100
    pendown()/penup() 画笔放下/抬起
    pensize(20) 画笔尺寸20
    pencolor(“red”) 红色画笔
    seth(60) 绝对角度60度
    right(60)/left(60) 向右/左转60度
    circle(30,90) 30为半径,画90度弧形(默认圆心在当前方向左侧)
    done() 绘制完成

    3、基本数据类型

    3.1 数据类型

    整数->浮点数->复数(最宽类型)

    整数类型:与数学中概念一致 pow(x,y),计算x的y次方
    浮点数类型:带小数点的数字
    浮点数之间运算存在不确定尾数,不是bug
    round(x,d),对x四舍五入,d是小数截取位数 用于辅助浮点数之间的运算
    复数类型:很少使用

    四种进制
    十进制:1019、-217
    二进制:0b、0B开头 0b010
    八进制:0o、0O开头 0o123
    十六进制:0x、0X开头 0X9a

    3.2 操作符及运算函数

    (1)操作符
    +、 -、 * 、/、//(整数除,结果取整)
    +x x本身
    -x x负值
    x%y 余数,模运算,10%3==1
    xy** x的y次幂,等同于pow(x,y)

    (2)运算函数
    abs(x) 绝对值
    divmod(x,y) 同时输出商和余数
    int(x) 对x取整
    float(x) 变成浮点数
    complex(x) 变成复数

    3.3 字符串类型和操作

    2类4种
    (1)由一对单引号或双引号表示,单行字符串
    (2)一对三单引号或三双引号表示,可表示多行字符串,三单引号可当注释用

    字符串序号
    正向递增(0、1、2、3…)、反向递减(-1、-2、-3…)

    [M] 索引某个字符
    [M:N] 切片,不包括N 其中M、N可缺失
    [M:N:K] 根据步长K切片 [::-1]将字符串逆序
    转义符反斜杠 放在字符前表示字符本意
    "\b" 回退
    "\n" 换行
    "\r" 回车(光标移到行首)

    字符串处理函数
    len(x) 字符串长度
    str(x) 任意x转化为对应字符串
    hex(x) 整数x变为十六进制小写字符串
    oct(x) 整数x变为八进制小写字符串
    chr(u) unicode编码返回字符
    ord(x) 字符x转化为unicode编码 python中字符都是unicode编码(统一字符编码)

    字符串处理方法
    str.lower()/str.upper() 返回字符串的副本,全部小/大写
    str.split(step-None) 返回一个列表,由str根据sep被分隔的部分组成
    str.count(sub) 返回子串sub在字符串中出现的次数
    str.replace(old,new) 旧字符串替换为新字符串
    str.center(width,fillchar) 字符串根据宽度居中,其它填充
    str.strip(chars) 去掉字符串中在chars中列出的字符
    str.join(iter) 字符串中除了最后一个字符外,每个字符后加一个, 用于字符分隔

    字符串类型的格式化

    format()方法控制槽内部对格式化的配置方式 {<参数序号>:<格式控制标记>}

    格式化符号

    例如:“{0:=^20}”.format(“python”) 等号填充 居中对齐 宽度20
    默认空格填充,左对齐

    3.4 time库的使用

    常用函数
    time() 获取当前计算机内部时间戳,浮点数 time.time()
    ctime() 获取当前时间并返回字符串 最简单
    gmtime() 获取当前时间,表示为计算机可处理的时间格式

    时间格式化
    strftime(tpl,ts) tpl为格式化模板字符串,定义输出效果 ;ts 为计算机内部时间类型变量

    >>>t=time.gmtime()
    >>>time.strftime(“%Y-%m-%d %H : %M:%S”,t)  #年月日时分秒

    strptime(str,tpl) str 为字符串形式的时间值 ;tpl 为格式化模板字符串,定义输入效果


    程序计时应用
    perf_counter() 返回一个CPU级别的精确时间计数值,单位为秒,连续调用求差值才有意义 =========>可用于分析程序性能,进而优化
    *sleep(s) 程序休眠s秒,s可以是浮点数

    4、程序的控制结构

    4.1 分支结构

    二分支的简洁结构(紧凑)
    <表达式1> if <条件> else <表达式2>
    条件为真,返回表达式1的值,条件为假,返回表达式2的值

    多分支结构
    if:
    elif:
    else:

    异常处理
    try:
    <语句块1>
    except:
    <语句块2>

    4.2 循环结构

    遍历循环
    for <循环变量> in <遍历结构>
    计数、字符串、列表、文件~

    无限循环
    while <条件> :
    <语句块>

    Ctrl+C 退出执行当前程序

    end="" 传递一个空字符串,这样print函数不会在上一个字符串末尾添加换行符

    循环控制保留字:
    break: 跳出并结束当前整个循环,执行循环后的语句(这次循环不执行
    continue: 结束当次循环,继续执行后续次数循环(不打破当前循环)

    4.3 random库概述

    伪随机数:使用梅森旋转算法生成的伪随机序列中的元素

    包括两类函数,常用共8个
    基本随机函数: seed() 、random()
    扩展随机函数: randint() 、getrandbits() 、uniform() 、randrange() 、choice() 、shuffle()

    常用函数

    随机函数的使用需要掌握的几大能力

    • 能够利用随机数种子产生“确定”伪随机数
    • 能够产生随机整数
    • 能够对序列类型进行随机操作

    换行符 / 可将一行长代码分拆到多行

    5、函数和代码复用

    5.1 函数定义与使用

    定义:一段代码的表示,具有特定功能的可重用语句组
    作用:降低编码难度、代码复用

    一般情况
    def <函数名>(<参数>):
    <函数体>
    return <返回值>

    #未定参数是一种占位符,可以无参数,但参数的括号必须保留

    可选参数传递
    def <函数名>(<非可选参数>,<可选参数>):
    <函数体>
    return <返回值>

    #可选参数一定在后面,计算时如果没有给定可选参数,则按默认的可选参数计算,否则按照给定值计算

    还有一种可变参数,def f(x,*b)

    参数传递的两种方式 def fact(n,m=1)

    • 按照位置:fact(10,5)
    • 按照名称: fact(m=5,n=10)

    函数的返回值

    • 函数可以返回0个或多个结果,不一定有return
    • return后返回值之间用逗号隔开即可

    局部变量和全局变量
    局部:函数内部变量
    全局:程序全局变量

    规则:(详见5.1视频6的5min附近)

    • 局部与全局变量不同,局部是内部占位符,与全局变量可能重名但不同,函数运算结束后,局部变量被释放,可以使用global保留字在函数内部使用全局变量
    • 局部变量为组合数据类型且未创建,等同于全局变量

    ls.append(a) ls是列表类型,未真实创建则等同于全局变量
    若先有ls=[],则被真实创建,属于局部变量

    lambda函数

    • 谨慎使用,主要用作一些特定函数或方法的参数,建议用def定义
    • 匿名函数,返回函数名作为结果
    • 用于定义简单的、能够在一行内表示的函数
      <函数名> = lambda <参数> : <表达式>
      #可以无参数
    >>>f=lambda x,y : x+y
    >>>f(10,15)
    25

    5.2 代码复用

    把代码当成资源进行抽象

    代码资源化:程序代码是一种用来表达计算的”资源”
    代码抽象化:使用函数等方法对代码赋予更高级别的定义,函数是代码的一种抽象
    代码复用:同一份代码在需要时可以被重复使用
    模块化设计:通过函数或对象封装将程序划分为模块及模块间的表达
    具体包括:主程序、子程序、子程序之间的关系
    紧耦合、松耦合:模块内部紧耦合,模块之间松耦合

    函数递归的理解
    函数定义中调用函数自身的方式

    递归两个关键特征

    • 链条:计算过程存在递归链条
    • 基例(基础的实例):存在一个或多个不需要再次递归的基例

    递归3个步骤

    • 函数+分支结构
    • 递归链条
    • 递归基例

    5.3 pyinstall库的使用

    将python源代码打包成可执行文件exe

    常用参数

    6、组合数据类型

    基本数据类型:集合类型、序列类型(元组、列表)、字典类型

    • str字符串
    • list列表
    • dict字典
    • tuple元组

    6.1集合类型及操作

    定义:多个元素的无序组合(与数学中概念一致、元素无序唯一、不可更改(即无可变数据类型))

    • 用{}表示,元素之间用逗号分开
    • 建立集合类型用{}或set()
    • 建立空集合类型必须用set()

    操作符

    增强操作符

    操作函数或方法

    集合类型应用场景

    • 包含关系比较
    • 数据去重(最重要)

    6.2 序列类型及操作

    定义:具有先后关系的一组元素

    • 一维元素向量,元素类型可以不同
    • 类似数学序列
    • 元素间由序号引导,通过下标访问序列的特定元素

    分类:字符串类型、元组类型、列表类型

    6个操作符:

    5个函数和方法:

    序列类型应用场景

    • 元组用于元素不改变的场景,更多用于固定搭配场景
    • 列表更加灵活,它是最常用的序列类型

    最主要作用:表示一组有序数据,进而操作它们

    • 元素遍历
    • 数据保护(如果不希望数据被程序所改变,就转换成元组类型,多用于多人合作过程)

    6.2.1 元组类型

    定义:元组类型是序列类型的一种扩展

    • 一旦创建不可更改,故无特殊操作
    • 使用()或者tuple()创建,元素间用逗号分隔
    • 可以使用或不适用小括号
    • 继承了序列类型的全部通用操作

    6.2.2列表类型

    定义:列表类型是序列类型的一种扩展,十分常用

    • 创建后可以随意被修改
    • 使用[]或者list()函数创建,元素间用逗号分隔
    • 各元素类型可以不同,无长度限制

    列表类型操作函数和方法

    lt 新增5个元素 :

    >>>lt += [1,2,3,4,5]

    返回数字0在 lt 中的索引 :
    >>>lt.index(0)

    6.3字典类型及其操作

    理解映射

    • 一种键(索引)和值(数据)的对应
    • 字典类型是映射的体现

    键值对

    • 键是数据索引的扩展
    • 字典是键值对的集合,键值对之间无序
    • 采用大括号{}和dict()创建,键值对用冒号:表示
      {<键1>:<值1>,<键2>:<值2>,<键3>:<值3>,<键4>:<值4>}

    用法:在字典变量中,通过键获得值

    <字典变量>={<键1>:<值1>,<键2>:<值2>,<键3>:<值3>,<键4>:<值4>}
    <值>=<字典变量>[<键>]

    例如:d[“a”]=1

    创建字典时,如果相同键对应不同值,字典采用最后(最新)一个"键值对"

    空字典生成

    >>>de={} ; type(de)     #type(x)  返回变量x的类型
    <class ‘dict’>

    字典类型操作函数和方法:

    后3个函数的返回信息并不是列表类型


    字典类型应用场景

    (1)映射的表达

    • 映射无处不在,键值对无处不在
    • 例如:统计数据出现的次数,数据是键,次数是值

    (2)元素遍历
    for k in d:
    <语句块>

    6.4 jieba库概述

    jieba是优秀的中文分词第三方库

    原理:利用一个中文词库,确定汉字之间的关联概率

    jieba库使用说明
    精确模式:把文本精确的切分开,不存在冗余单词(最常用)
    全模式:把文本中所有可能的词语都扫描出来,有冗余
    搜索引擎模式:在精确模式基础上,对长词再次切分

    jieba库常用函数

    7、文件和数据格式化

    定义

    • 字符串格式化:将字符串按照一定的规格和样式进行规范
    • 数据格式化:将一组数据按照一定规格和样式进行规范:表示、存储、运算等

    7.1文件的使用

    文件是数据的抽象和集合

    • 文件是存储在辅助存储器上的数据序列
    • 文件是数据存储的一种形式
    • 文件展现形态:文本文件和二进制文件 只是展现方式,本质上都是二进制存储

    文本文件

    • 由单一特定编码组成的文件,如UTF-8编码
    • 由于存在编码,也被看做存储着的长字符串
    • 适用于例如:txt文件、.py文件

    二进制文件

    • 直接由比特0和1组成,没有统一字符编码
    • 一般存在二进制0和1的组织结构,即文件格式
    • 适用于例如:.png文件、.avi文件等

    文件的打开与关闭
    <变量名> = open(<文件名>(路径和名称,同目录可省略) , <打开模式>(文本或二进制))

    例如:a=open(“f.txt,rt”)

    绝对路径:”D:/PYE/f.txt”或者”D:\\PYE\f.txt”
    前面是反斜杠,后面是斜杠(与python转义符产生歧义,故用2个)
    相对路径:若源文件与程序同目录,”f.txt” 或者 “./PYE/f.txt”

    文件的打开模式

    • 不注明则默认为 rt
    • b、t 不注明默认为 t
    • a+ 文本、追加写模式、读文件

    文件的关闭
    <变量名>.close()
    尽量别忘了加上这一句

    文件内容的读取:

    文件的全文本操作

    • 遍历全文本:一次统一读入;按数量读入,逐步处理;
    • 逐行遍历文件:分行读入,逐行处理

    数据的文件写入

    for i in f :指的是从当前位置开始遍历,如果是写入数据需要先把指针调整到文件开始位置

    7.2 一维数据的格式化和处理

    一维数据:由对等关系的有序或无序数据构成,采用线性方式组织
    (对应列表、数组、集合等概念)
    二维数据:由多个一维数据构成,是一维数据的组合形式
    (例如表格)
    多维数据:由一维或者二维数据在新维度上扩展形成

    7.2.1 一维数据的格式化和处理

    存储-表示-操作

    (1)表示

    • 数据间有序,使用列表类型
    • 数据间无序,使用集合类型(表达无序数据的最好结构)
      for语句可以遍历数据

    (2)存储

    • 空格分隔:一个或多个空格,不换行(缺点是数据本身不能存在空格)
    • 逗号分隔:英文半角逗号,不换行(缺点是数据本身不能存在英文逗号)
    • 其他方式:其他符号,尽量用特殊符号(缺点是需要根据数据特点定义,通用性较差)

    (3)处理

    • 读取处理:txt.split(“空格或特殊符号等”)
    • 写入处理:f.write(‘ ’.join(ls)) 将join前面的空格加入到ls的各个元素之间

    7.2.2二维数据的格式化和处理

    (1)表示: 使用列表类型

    • 使用两层for循环遍历每个元素
    • 外层列表中每个元素可以对应一行,也可以对应一列

    (2)存储
    CSV(comma-separated values)数据存储格式:用逗号来分隔值的一种存储方式

    • 国际通用的一二维数据存储格式,一般.csv扩展名
    • 每行一个一维数据,采用逗号分隔,无空行
    • excel和一般编辑文件都可以读入或者另存为csv文件

    【注意】

    • 如果某个元素缺失,逗号仍要保留
    • 二维数据的表头可以作为数据存储,也可以另行存储
    • 逗号为英文半角逗号,且逗号与数据之间无空格
    • 一般索引习惯:先行后列
    • 根据一般习惯,外层列表每个元素是一行,按行存

    (3)处理

    7.3 wordcloud库的使用

    wordcloud库把词云当做一个WordCloud对象

    • wordcloud.WordCloud()代表一个文本对应的词云
    • 根据文本中词语出现频率等参数绘制词云
    • 词云形状尺寸颜色等都可以设定

    常规方法:w=wordcloud.WordCloud()

    绘制步骤

    • 配置对象参数
    • 加载词云文本
    • 输出词云文件

    程序工作:分隔、统计、字体、布局

    配置对象参数:wordcloud.WordCloud(<参数>)

    8、程序设计方法学

    8.1 程序设计综合介绍

    自顶向下:解决复杂问题的有效办法

    • 分解总问题为若干个小问题形式
    • 使用同样方法进一步分解小问题
    • 直至小问题可以被计算机简单明了的解决

    自底向上:逐步组建复杂系统的有效测试方法

    • 分单元测试,逐步组装
    • 按照自顶向下相反的路径操作
    • 直至,系统的各部分一组装的思路都经过测试和验证

    Python程序设计思维
    计算思维:抽象+自动化
    编程是将计算思维变成现实的手段

    计算生态与Python语言

    计算生态以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展、相互依存和迅速更迭中完成信息技术的更新换代,形成了技术的自我演化路径。

    没有底层设计、以功能为单位,具备三个特点(竞争发展、相互依存、迅速更迭)

    以python为例

    • 以开源项目为代表的的庞大第三方库
    • 库的建设经过野蛮生长和自然选择
    • 库之间相互关联使用,相互依存
    • 社区庞大,新技术更迭迅速

    API != 生态
    API指应用程序编写接口(经过设计的产物)

    用户体验与软件产品
    提高用户体验的方法:

    • 进度展示
    • 异常处理
    • 打印输出
    • 日志文件
    • 帮助信息

    基本的程序设计模式

    • IPO
    • 模块化设计(模块内部紧耦合,模块之间松耦合)
    • 配置化设计(引擎+配置)

    应用开发的四个步骤

    • 产品定义:不仅是功能定义,需考虑商业模式
    • 系统架构:思考产品技术实现,关注数据流、模块化、体系架构
    • 设计与实现:结合架构完成关键设计及系统实现(结合可扩展性、灵活性)
    • 用户体验:从用户角度思考应用效果

    8.2 第三方库安装

    安装方法

    • 使用pip命令
    • 集成安装方法
    • 文件安装方法

    常用pip命令

    • pip install <第三方库名> 安装指定的第三方库
    • pip install -u <第三方库名> 更新已安装的指定第三方库
    • pip uninstall <第三方库名> 卸载指定的第三方库
    • pip download <第三方库名> 下载但不安装指定的第三方库
    • pip show <第三方库名> 列出指定第三方库详细信息
    • pip search <关键词> 根据关键词在介绍和名称中搜索第三方库
    • pip list 列出当前系统已经安装的第三方库

    集成安装方法
    Anaconda(类似IDLE的开发环境)

    • https://blog.csdn.net/ovo2263/article/details/www.continuum.io link
    • 支持近800个第三方库
    • 包含多个主流工具
    • 适合数据计算领域开发

    文件安装方法

    • 某些第三方库需要编译再安装
    • 如果操作系统没有编译环境,则能下载但不能安装

    8.3 os库基本介绍

    os库提供通用的、基本的操作系统交互功能

    • 路径操作:os.path子库,处理文件路径及信息
    • 进程管理:启动系统中其他程序
    • 环境参数:获得系统软硬件信息等环境参数

    1、路径操作(path指一个文件名,可包含路径)

    2、进程管理
    os.system(command)

    • 执行程序或命令command
    • 在windows系统中,返回值为cmd的调用返回信息

    3、环境参数

    作者:木头水上漂
    时间:2020.08.17
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: