本文仅为学习记录,笔记来源于北京理工大学MOOC
实例的记录见这篇里面有jupyter笔记的下载链接
文章目录
(一)python快速入门
Week1 _基本语法元素
1.1 程序设计基本方法
-
源代码&目标代码
-
编译&解释→编译器compiler&解释器interpreter
-
静态语言&脚本语言
编译执行/解释执行 -
程序基本编写方法
IPO:输入、输出、处理
解决问题步骤:- 分析问题的计算部分
- 划分问题的功能边界
- 设计问题的求解算法
- 编写问题的计算程序
- 调试程序使正确运行
- 适应问题的升级维护
1.2 python开发环境配置
两种编程方式:交互式&文件式
1.3 实例1 温度转换
1.4 语法元素
-
数据类型
Numbers(数字)- int(有符号整型)
- long(长整型[也可以代表八进制和十六进制])
- float(浮点型)
- complex(复数)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典) -
语句与函数
Week2_画图
2.2 实例2 蟒蛇绘制
2.3 turtle库概述
- 计算生态=标准库+第三方库
- 库library,包package,模块module
- turtle库
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心
turtle.goto(x,y)
绝对坐标
turtle.circle(r,angle)
/turtle.backward(d)
/turtle.forward(d)
角度坐标
turtle.seth(angle)
绝对-角度坐标
turtle.right(degree)
/turtle.left(degree)
相对-角度坐标
2.4 turtle程序语法元素分析
库引用的方法:
import <库名>
from <库名> import*
/from <库名> import <函数名>
简洁,但可能出现函数重名问题import <库名> as <别名>
理解他人代码方法:
- 了解参考框架结构
- 逐行分析
- 逐词理解
(二)python基础语法
Week3_基本数据类型
3.1 数字类型及操作
数字类型:
- 整数
十进制,二进制0b/0B,八进制0o/0O,十六进制0x/0X - 浮点数
不确定尾数。round(x[,d])
对x四舍五入到小数点后d位 - 复数
z.real获得实部,z.imag获得虚部
运算符
+ - * / // % **
op =
op指上述的二元操作符
数值运算函数
abs()
divmood(x,y)
(商,余)pow(x,y[,z])
x**y%z
3.2 实例3 天天向上的力量
3.3 字符串类型及操作
字符串类型及操作
字符串操作符:
x+y
n*x /x*n
x in s
成员运算符,如果在指定的序列中找到值返回 True,否则返回 False
字符串处理方法:
掌握——python的字符串(String)及其常见操作(方法、函数)
- 下标与切片
str[下标],从左向右0→+,从右向左-1→
str[起始:结束:步长],范围包首不包尾- 查找、分割、大小写格式化、对齐格式化、清除空白字符、检查
str.upper()
/str.lower
转换 string 中所有小写字符为大写/相反str.split(sep=None)
以 str 为分隔符切片 stringstr.count(sub[,beg,end])
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数str.replace(old,new)
把 string 中的 str1 替换成 str2str.center(width)
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串str.strip(chars)
在 string 上执行 lstrip()和 rstrip(),即删除 string 字符串开头和末尾的空格str.join(seq)
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
字符串处理函数:
len(x)
str(x)
hen(x)
oct(x)
chr(u)
&ord(x)
字符串类型的表示
- 一对单双引号/一对三引号:根据情况选择外侧用什么表示
- 访问字符串中的值:索引&切片表示
- 转义字符
- 字符串格式化:利用字符串格式符 %s或者字符串的函数 str.format()
format():
{:|<填充><对齐><宽度>|<,><.精度><类型>}
填充——用于填充的单个字符
对齐——<左对齐 >右对齐 ^居中对齐
,——数字的千位分隔符
类型——
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
3.4 time库
time库的使用
time库:
-
时间获取
.time()
返回计算机内部时间值,浮点数.ctime()
返回字符串.gtime()
返回计算机可处理的时间格式
-
时间格式化
strftime(tpl,ts)
tpl是格式化模板字符串,用来定义输出结果;ts是计算机内部时间变量类型
t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t);
#运行结果
#'2019-09-19 01:25:01'
strptime(str, tpl)
str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果
timeStr = '2019-09-19 09:30:45'
time.strptime(timeStr, "%Y-%m-%d %H:%M:%S");
#运行结果
#time.struct_time(tm_year=2019, tm_mon=9, tm_mday=19, tm_hour=9, tm_min=30, tm_sec=45, tm_wday=3, tm_yday=262, tm_isdst=-1)
- 程序计时
- 测量时间:
perf_counter()
返回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义 - 产生时间:
sleep()
拟休眠的时间,单位是秒,可以是浮点数
3.5 实例4 文本进度条
Week4_程序的控制结构
4.1 程序的分支结构
- 单分支结构
根据判断条件而选择不同向前路径的运行方式
“如果-则”if<>
- 二分支结构
根据判断条件结果而选择不同向前路径的运行方式
“如果-否则”if<> else<>
紧凑型式
print("猜{}了".format("对"if guess==99 else "错")
- 多分支结构
if<> elif<> else<>
- 条件判断与组合
条件判断>;<;==;!=等
条件组合and;or;no
- 程序的异常处理
try:
<语句块>
except <异常类型>:
<语句块>
#异常类型的名字是预定义了
#---------------------
try:
except:
else:
finally
4.2 实例5 身体质量指数
4.3 程序循环结构
- 遍历循环
for<循环变量> in <遍历结构>
字符串、列表、文件、元组、字典也可以遍历 - 无限循环
while
- 循环控制保留字
break
continue
- 循环的高级用法
循环与else
4.4 random库
- 伪随机数
- 基本随机函数
seed()
初始化给定的随机数种子,默认为当前系统时间
#用种子可以使得之后复现时产生的随机数相同
random()
生成一个[0.0, 1.0)之间的随机小数
4.5 实例6 圆周率的计算
Week5_函数和代码复用
5.1 函数的定义和使用
- 函数的理解和定义
输入(参数)、处理(函数体)和输出(IPO) - 函数的使用和调用
- 函数的参数传递
可选参数(,)
&可变参数(,*)
传递 - 函数的返回值
- 局部变量和全局变量
——
lambda函数,一种匿名函数,一般用于定义一些特殊的参数。
5.2 实例7 七段数码管绘制
5.3 代码复用和函数递归
- 代码复用
- 模块化设计
- 函数递归
递归:函数定义中调用函数自身的方式。
链条:计算过程中存在递归链条。
基例:存在一个或多个不需要再次递归的基例。
【例】求n的阶乘
5.4 PyInstaller库
5.5 实例8 科赫雪花小包裹
Week6_组合数据类型
6.1 集合类型及操作
笔记:集合类型和操作
- 集合类型定义
- 集合操作符
- 集合处理方法
- 集合类型应用场景
6.2 序列类型及操作
笔记:序列类型及操作
- 序列类型定义
包括字符串、列表、元组类型 - 序列处理函数及方法
s.index(x,i,j) 返回序列s从i开始到j位置中第一次出现元素x的位置
- 元组类型及操作
- 元组是一种序列类型,一旦创建就不能被修改;
- 使用小括号()或tuple()创建,元素间用逗号 , 分割;
- 可以使用或不使用小括号;def func(): return 1,2;
- 列表类型及操作
- 列表是一种序列类型,创建后可以随意被修改;
- 使用方括号[]或list()创建,元素间用逗号,分割;
- 列表中各元素类型可以不同,无长度限制
6.3 实例9 基本统计值计算
6.4 字典类型及操作
- 字典类型及定义
字典类型是“映射”的体现
- 键值对:键是数据索引的扩展
key:value
;- 字典是键值对的集合,键值对之间无序;
- 采用大括号{}和dict()创建,键值对用冒号:表示;
python中要求字典中的键是不可变的,如字符串、数字或元组;而值则可以取任何数据类型
→数据类型的嵌套问题<笔记>
#<字典变量> = {<键1>:<值1>, ..., <键n>:<值n>}
#<值> = <字典变量>[<键>];
>>> d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"};
>>> d["中国"];
'北京'
- 字典处理函数和方法
>>> d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"};
>>> "中国" in d
True
>>> d.keys()
dict_keys(['中国', '美国', '法国'])
>>> d.values();
dict_values(['北京', '华盛顿', '巴黎'])
>>> d.get("中国","伊斯兰堡");
'北京'
>>> d.get("巴基斯坦","伊斯兰堡");
'伊斯兰堡'
>>> d.popitem()
('法国', '巴黎')
>>> d.items();
dict_items([('中国', '北京'), ('美国', '华盛顿'), ('法国', '巴黎')])
>>> list(d.items());#将元祖转换为列表
[('中国', '北京'), ('美国', '华盛顿'), ('法国', '巴黎')]
- 字典类型应用场景
元素遍历for k in d
6.5 jieba库
-
jieba是优秀的中文分词第三方库,需要额外安装,安装的语句是:pip install jieba
-
中文文本需要通过分词获得单个的词语
-
jieba库提供三种分词模式,分别是精确模式,全模式,搜索引擎模式
采用.add_word()
增加新词
6.6 实例10 文本词频统计
Week7_文件和数据类型的格式化
7.1 文件的使用
- 文件的类型
文件是数据的抽象和集合;
文件是存储在辅助存储器上的数据序列;
文件是数据存储的一种形式;
文件的展现形态——文本文件和二进制文件:本质上,所有文件都是二进制形式存储;形式上,所有文件采用两种方式展示;
- 文件的打开和关闭
打开open(<打开路径>,<打开模式>)
操作- 读取
- 写入
关闭close()
- 读取
- 文件内容的读取
- 数据的文件写入
7.2 实例11 自动轨迹绘制
7.3 一维数据的格式化和处理
- 一维数据:
对应列表、数组和集合等概念 - 二维数据:
由多个一维数据构成,是一维数据的组合形式 - 多维数据:
由一维或二维数据在新维度上扩展形成 - 高维数据
– - 理解数据的操作周期:存储、表示、操作
– - 一维数据的表示:列表 or 集合
- 一维数据的存储: 用空格分隔、用逗号分割、其他特殊符号
- 一维数据的处理(前两者)
7.1处有介绍打开和写入操作
- 读入
#文件内容fname.txt:中国 美国 日本 德国 法国 英国 意大利
txt = open(fname).read()
ls = txt.split(',')
f.close()
- 写入
ls = ['中国', '美国', '日本']
f = open(fname, 'w')#打开文件,执行写操作
f.write(' '.join(ls))
f.close()
7.4 二维数据的格式化和处理
- 二维数据的表示:
一般使用列表类型-二维列表,如:[[1,3,4],[2,6,5],[1,13,2]]
两层遍历 - CSV数据存储格式
CSV(Comma-Separated Values)用逗号分隔无空格
csv约定:
如果某个元素缺失,逗号仍要保留
二维数据的表头可以作为数据存储,也可以另行存储
逗号为英文半角逗号,逗号与数据之间无额外空格
- 二维数据的存储
一般的索引习惯是ls[row][column]先行后列,按行存 - 二维数据的处理
- 二维数据的读入处理
#实例11就有用过啦
#从csv文件中读取数据
ls = [];
fo = open(fname)
for line in fo:
line = line.replace("\n","");
ls.append(line.split(","));
fo.close();
- 二维数据的写入处理
#将数据写入csv格式的文件
ls = [[], [], []];#二维列表
f = open(fname, 'w');
for item in ls:
f.write(','.join(item) + "\n");
f.close();
- 二维数据的逐一处理
#两层遍历
#采用二层循环
ls = [[1, 2], [3, 4], [5, 6]];
for row in ls:
for column in row:
print(column);
7.5 wordcloud库
wordcloud是优秀的词云展示第三方库,可以根据文本中词语出现的频率等参数绘制词云,且词云的绘制形状、尺寸和颜色都可以设定
wordcloud.WordCloud()
import wordcloud
w=wordcloud.WordCloud()
w.generate(txt) #向WrodCloud对象w中加载文本txt
w.to_file(filename) #将词云输出为图像文件,.png或.jpg格式
配置对象参数