语言特点:简洁,代码量少
Python语言是
通用语言
脚本语言
开源语言
跨平台语言
多模型语言
胶水语言
输入数据
处理数据
输出数据
Python 语法元素分析
严格缩进(4nbsp)表明格式框架
标明代码的层次关系
缩进是表明程序框架的唯一手段
注释
单行注释 #
多行注释 ```开头和结尾
命名与保留字
大小写字母、数字、下划线(_)、和汉字。首字符不能是数字, 中间不能出现空格 长度无限制
++大小写敏感++
变量 | 常量 |
---|---|
程序中值不发生改变的元素 | 程序中值发生改变或者可以发生改变的元素 |
也称关键字,编程语言内部定义并保留使用的标识符
编写程序不能定义与保留字相同的标识符
保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等
字符串
“ ” 或者 ’ '括起来的一个或多个字符
两种序号体系
赋值语句
同步赋值语句:<变量1>, …, <变量N> = <表达式1>, …, <表达式N>
t=x x=y y=t <=> x,y = y,x
input()函数
val = input("提示性文字")
根据判断选择程序执行路径
if condition1 :
dosth
elif condition2 :
dosth
...
else:
以Python表达式的方式解析并执行字符串
x = 1
eval("X + 1") 结果为2
eval("1.1 + 2.2") -结果为3.3-
通过%选择要输出的变量
print("The average numbner is %f" % float_num)
for i in range(num):
do
整数类型
浮点数类型
复数类型
> 数字类型对Python语言中的数字表示和使用进行了定义和规范
pow(x ,y) x^y
科学计数法 98e4 53e-3 2.6E5 e或者E
复数
z = a + bj
z.real z.imag
数字类型的操作
混合类型运算 结果为最宽的类型
基本规则:
整数 -> 浮点数 -> 复数
内置数字运算函数
函数 | 描述 |
---|---|
abs(x) | 绝对值 |
divmod(x,y) | (x//y, x%y) 二元组形式 |
pow(x,y[,z]) | (x**y)%z []参数可以省略 |
round(x[,ndigits) | x四舍五入,保留ndigits位小数 返回四舍五入的整数值 |
max(x1,x2,……,xn) | 最大值,n无限制 |
min(x1,x2,……,xn) | 最小值,n无限制 |
函数 | 描述 |
---|---|
int(x) | x(字符串,浮点数)转换为整数 |
float(x) | x(字符串,整数) 转换为浮点数 |
complex(re[,im]) | 生成实数 实部re(int,float,string) 虚部im(int, float) |
type(x) 返回x的类型,适用于所有
type(4.5) 结果:
\ 输出带引号的字符串
\\ 带有转义符的字符串
\n 换行
[<索引>] [0 ,len-1]
[:] 不包括end
”+” 拼接
“*” 本身字符串重复连接形成
3 * "pine" = 'pinepinepine'
len("pine") 结果:4
str(123) 结果'123'
for chr in string:
do
操作 | 含义 |
---|---|
+ | 连接 |
* | 重复 |
[] | 索引 |
[:] | 剪切 |
len() | 长度 |
.upper() | 大写 |
.lower() | 小写 |
.strip() | 去两边空格和指定字符 |
.split() | 指定字符分割为数组 |
.join() | 连接两个字符串 |
.find() | 搜索指定字符串 |
.replace() | 字符串替换 |
for in | 迭代 |
format()
<模版字符串>.format(<逗号分隔的参数>)
Example:
"{}: 计算机{}的cpu占用率为{}%".format("2016","Python",10)
默认{}顺序对应参数顺序 也可以指定顺序
"{1}: 计算机{0}的cpu占用率为{2}%".format("Python","2016”,10)
{<参数序号>:<格式控制标记>}: | <填充> | <对齐> | <宽度> | , | <.精度> | <类型> |
---|---|---|---|---|---|---|
引导符号 | 填充的单个字符 | < 左对齐 ^ 居中对齐 > 右对齐 | 设定输出宽度 | 千位分隔符 | 浮点数小数点精度 字符串输出最大长度 | 整数类型 b,c,d,o,x,X 浮点数类型e,E,f,% |
程序的基础
单分支 二分支(组合成多分支)
if if-else if-elif-else
条件循环 遍历循环
<表达式1> if <条件> else <表达式2>
count = 2
count if count != 0 else "不存在"
for i in range(N):
do
for line in fi:
do
for chr in string:
do
for item in lsL
do
for s in "BIT":
print("execute" + s)
else:
s = "normal complete"
print(s)
#在for正常执行后,继续执行else中的内容。else只在循环正常执行之后才执行并结婚
一直保持循环操作知道特定循环条件不被满足才结束,不需要提前知道确定循环次数
break and continue
break跳出最内层的for或while循环
continue跳过循环中下面的语句,不出循环
异常处理
try:
num = eval(input("输入一个整数")
print(num**2)
except NameError:
print("输入错误,非整数")
可支持多个except,except不指定类型则处理所有异常
graph TD
A[try]-->B{no excpetion}
A[try]-->F{exception}
F{exception}-->G[except]
G[except]-->D[fianll]
B-->C[else]
C-->D[finally]
- 函数是一种功能抽象
- 函数是一段具有特定功能的,可重复的语句组,用函数名表示并通过函数名完成功能调用
- 具有名字的子程序,无须重复编写
-不同的参数输入实现对不同的数据的处理- 执行后反馈处理结果
def ():
return
= lambda:
等价于
def ():
return
参数存在默认值,默认值也可以更改
*实现可变数量参数
调用时指定参数名称,使得参数顺序任意调整
return可以返回多个(元组类型) 也可以无return
局部变量在函数执行完成后将被释放
>>>n = 1 #n是全局变量
>>>def func(a, b):
n = b #这个n是在函数内存中新生成的局部变量,不是全局变量
return a*b
>>>s = func("knock~", 2)
>>>print(s, n) #测试一下n值是否改变
knock~knock~ 1
global 显示声明全局变量
>>>n = 1 #n是全局变量
>>>def func(a, b):
global n
n = b #将局部变量b赋值给全局变量n
return a*b
>>>s = func("knock~", 2)
>>>print(s, n) #测试一下n值是否改变
knock~knock~ 2
块内紧耦合,块间松耦合
存在一个或多个基例,必须要以一个或多个基例结尾
组合数据类型概述
序列类型(string tuple list))
先后关系,序号访问,不排他
集合类型 (set)
无序,互异
映射类型(map)
键值对
列表类型
>>>ls = [425, "BIT", [10, "CS"], 425]
>>>ls
[425, 'BIT', [10, 'CS'], 425]
简单的列表赋值不会产生新的对象,而是有一个指针
函数或方法 | 描述 |
---|---|
ls[i]=x | ls第i项替换为x |
ls[i:j] = lt | lt替换ls中的第i到j项(不含j) |
ls[i:j:k] = lt | lt替换i到j以k为步长的项 |
del ls[i:j] | 删除ls i 到 j 项 |
del ls[i:j:k] | 删除i 到j k为步长 |
ls += lt 或 ls.extend(lt) | lt增加到ls中 |
ls *= n | 更新ls 元素重复n次 |
ls.append(x) | ls最后增加一个x |
ls.clear() | 删除所有元素 |
ls.copy() | 生成一个新列表 复制ls所有元素 |
ls.insert(i,x) | 在i位置插入x |
ls.pop(i) | 弹出第i个 |
ls.remove(x) | 删除第一个出现的元素x |
ls.reverse(x) | ls元素反转 |
使用一个列表改变另一个列表的值时候 多增少减
>>>vlist
[0, 1, 2, 'python', 4]
>>>vlist[1:3]=["bit", "computer"]
>>>vlist
[0, 'bit', 'computer', 'python', 4]
>>>vlist[1:3]=["new_bit", "new_computer", 123]
>>>vlist
[0, 'new_bit', 'new_computer', 123, 'python', 4]
>>>vlist[1:3]=["fewer"]
>>>vlist
[0, 'fewer', 123, 'python', 4]
<值> = <字典变量>[<键>]
直接使用大括号{}可以创建一个空的字典,并通过中括号[]向其增加元素。
>>>Dp={}
>>>Dp['2^10']=1024
>>>print(Dp)
{'2^10': 1024}
函数和方法 | 描述 |
---|---|
.keys() | 返回所有键信息 |
.values() | 返回所有值信息 |
.items() | 返回所有键值对 |
.get(,) | 键存在则返回,否则返回默认值 |
.pop(,) | 键存在则返回并删除,否则返回莫认真 |
.popitem() | 随机取出一个键值对,元组(key,value)形式返回 |
.cealr() | 删除所有键值对 |
del [] | 删除某一个键值对 |
in | 判断键是否在字典中 True or False |
文件包括文本文件和二进制文件
textFIle = open("filename","rt") #文本文件
textFIle = open("filename","rb") #二进制文件
<变量名> = open(<文件名>,<打开模式>)
打开模式 | 含义 |
---|---|
‘r’ | 只读,不存在返回FileNotFoundError |
‘w’ | 覆盖写模式,不存在则创建 |
‘x’ | 创建写模式,不存在创建,存在报错FileExistsError |
‘a’ | 追加写模式,不存在创建,存在追加 |
‘b’ | 二进制模式 |
‘t’ | 文本文件模式,默认 |
‘+’ | 和rwxa一起使用,原功能基础上增加同时读写功能 E:w+ |
方法 | 含义 |
---|---|
.readall() | 读取整个文件内容,返回字符串或字节流 |
.read(size=-1) | 读入前size长度的字符串或字节流 |
.readline(size=-1) | 读入一行,或者该行前size长度 |
.readlines(hint=-1) | 读入所有行,或者hint行,每行为元素形成一个列表 |
方法 | 含义 |
---|---|
.write(s) | 文件写入一个字符串或者字节流 |
.writelines(lines) | 元素为字符串的列表写入文件 |
.seek(offset) | 改变指针位置 0:开头 1:当前 2:结尾 |
CSV文件的每一行是一维数据,可以使用Python中的列表类型表示,整个CSV文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。
[
['城市', '环比', '同比', '定基\n'],
['北京', '101.5', '120.7', '121.4\n'],
['上海', '101.2', '127.3', '127.8\n'],
['广州', '101.3', '119.4', '120.0\n'],
['深圳', '102.0', '140.9', '145.5\n'],
['沈阳', '100.1', '101.4', '101.6\n'],
]
"本书作者" : [
{ "姓氏" : "嵩",
"名字" : "天",
"单位" : "北京理工大学" },
{ "姓氏" : "礼",
"名字" : "欣",
"单位" : "北京理工大学" },
{ "姓氏" : "黄",
"名字" : "天羽",
"单位" : "北京理工大学" }
]
模块编程思想是Python 语言最大的价值
pip工具安装
最常用 最高效
自定义安装
文件安装
pip install <拟安装库名>
pip install -U
pip uninstall <拟卸载库名>
pip download <拟下载库名>
pip search <拟查询关键字>
pip list