1 程序框架
1.1 缩进
定义:一行代码开始前的空白区域表达程序的格式框架
- 格式明确:缩进是语法的一部分,缩进不正确程序运行错误
- 表达所属关系:表达代码间包含和层次关系的唯一手段
- 长度一致:Python要求在一个程序中的缩进长度一致
在一个程序中,如果用四个空格来表示缩进,则 - 用一个四个空格表示单层缩进
- 用两个四个空格表示双层缩进
- …
注:缩进并非一定用四个空格表示,也可以用其他数量的空格表示,但在一个程序中缩进的长度要相同。
1.2 注释
**定义:**程序员用来标记程序功能以及提高程序可读性的一种方式
- 用于提高代码可读性的辅助性文字不被执行
**单行注释:**以#开头,其后内容为注释
这是单行注释
**多行注释:**以’’'开头和结尾,中间内容为注释
'''这是多行注释的第一行
这是多行注释的第二行'''
1.3 变量
命名规则:
- 变量由大小写字母,数字,下划线,汉字组成
- python变量大小写敏感
- 变量不能与保留字相同
- 变量首字符不能是数字
- 应使用小写的python变量名
2 字符串(365+2)
三个操作符,六个常用函数,七个常用方法
2.1 字符串的定义
由0/多个字符组成的有序字符序列
2.2 字符串的表示
- 由一对单/双引号表示,仅表示单行字符串
#单行字符串
a='hello word'
b="统计学习"
print("{}和{}".format(a,b))
输出:
hello word和统计学习
2. 由一对三单/双引号表示,仅表示多行字符串
#多行字符串
c='''人生苦短
我学python'''
print(c)
输出:
人生苦短
我学python
- 若字符串本身存在引号该怎么表示
- 用转义符( \ ),让引号表示原来的意思
- 用字符串中未出现的引号来表示字符串:
- 若引号中只出现了单/双引号,则用未出现的引号表示字符串
- 若引号中同时出现了单引号与双引号,则用三单/双引号表示字符串
print('i\'m student')
print("i'm student")
print('''idn'cnncin"cibb''')
输出:
i'm student
i'm student
idn'cnncin"cibb
2.3 字符串的使用
使用[]获取字符串中一/多个字符
2.3.1 字符串的序号
正向递增序号 | 0 1 2 3 4 5 6 7 |
---|---|
字符串 | 这 是 字 符 串 的 序 号 |
反向递减字符串 | -8 -7 -6 -5 -4 -3 -2 -1 |
2.3.2 索引
返回字符串中单个字符
格式:<字符串>[M] 取出字符串中序号为M的字符
s='hello word'
s[3]
输出:
'l'
2.3.3 切片
返回字符串中一段字符
格式:<字符串>[M:N] 取出字符串序号为M到序号N的字符,取前不取后
s='helloword'
s[2:7]
输出:
'llowo'
2.3.4 切片的高级用法
- <字符串>[M:N:K] 从字符串序号为M到序号为N的子串中,以K为步长取出相应字符,从M位开始取(取M位但不能取N位),取前不取后
- <字符串>[:N]/[M:] 从字符串中取出字符,一直取到N位(N位不取)/从M位一直取到最后一个字符(M位与最后一个字符都取)
- <字符串>[::-1] 将字符串中字符逆序排列
s[1:6:2]
s[6:]
s[::-1]
输出:
'elw'
'ord'
'drowolleh'
2.4 字符串操作符
操作符及使用 | 描述 |
---|---|
X + Y | 连接两个字符串X和Y() |
n * X / X * n | 复制n次字符串X |
X in S | 如果X是S的子串,返回True,否则返回False |
X="hello"
Y="word"
print(X+" "+Y)
print(4*X)
Y in X
输出:
hello word
hellohellohellohello
False
2.5 常用的字符串处理函数
函数及使用 | 描述 |
---|---|
len(X) | 返回字符串的长度 |
str(X) | 将任意数据类型转换为所对应的字符串形式 |
hex(t)/oct(t) | 将整数X的十六/八进制小写形式转换为字符串 |
chr(u) | u为编码,即数字,返回所对应的字符 |
ord(x) | x为字符,返回所对应的编码,即返回数字 |
print(len(X))
print(str(34499))
print(chr(10004))
输出:
5
34499
✔
2.6 常用的字符串处理方法
方法及使用 | 描述 |
---|---|
str.title()/lower()/upper() | 以首字母大写/所有字母小写/所有字母大写 的方式显示每个单词 |
str.split() | 返回由被括号中的字符分隔字符串作为元素的列表 |
str.count(sub) | 返回子串sub在字符串中出现的次数 |
str.replace(old,new) | 返回一个字符串,所有old子串已被new子串所替换的字符串 |
str.center(width,fillchar) | 字符串根据设置的宽度(width)居中,fillchar为填充字符 |
str.strip()/lstrip()/rstrip() | 删除字符串两边/前面/后面 的空格 |
str.join(iter) | 返回为在iter变量除最后一个元素外每个元素后增加一个str |
print("首字母大写{},所有字母小写{},所有字母大写{}".format(X.title(),X.lower(),X.upper()))
print(X.split('e'))
print(X.count('l'))
print(X.replace('l','v'))
print(X.center(20,'='))
a=' sdf '
print('删两边空格{},删前面空格{},删后面空格{}'.format(a.strip(),a.lstrip(),a.rstrip()))
a='@'
print(a.join('hello word'))
输出:
首字母大写Hello,所有字母小写hello,所有字母大写HELLO
['h', 'llo']
2
hevvo
=======hello========
删两边空格sdf,删前面空格sdf ,删后面空格 sdf
h@e@l@l@o@ @w@o@r@d
2.7 字符串类型的格式化
格式:str.format(<逗号分隔的参数>)
例:"{1}计算机{0}的CPU占用率为{2}%".format("2018-10-10","c",10)
print("{1}计算机{0}的CPU占用率为{2}%".format("2018-10-10","c",10))
输出:
c计算机2018-10-10的CPU占用率为10%
槽内部对格式化的配置方式
槽内部格式:{<参数序号>:<格式控制标记>}
格式控制标记(用的顺序也是一样的,后三个是数字类型特有的) | 描述 |
---|---|
填充 | 用于填充的字符 |
对齐 | <:左对齐,>:右对齐,^:居中对齐 |
宽度 | 设定槽的输出宽度 |
<,> | 数字的千位分隔符 |
<.精度> | 表示浮点数小数部分的精度,即输出保留几位小数格式为<.n> |
类型 | 整数类型:b:二进制格式 c:字符 d:十进制格式 o:八进制格式 x:十六进制小写 X:十六进制大写 浮点数类型:e/E:采用科学计数法e/E表示浮点数 f:非科学计数法表示 %:以百分数形式表示 |
'{:=^20,.3f}'.format(3486.092738)
输出:
=====3,486.093======
3 数字类型(368+1+2)
三个转换函数,六个运算函数,八个操作符+增强操作符+实部函数与虚部函数
3.1 整数类型
数学中的整数一致,可正可负,没有取值范围限制
整数的四种进制表示
- 十进制:100,99,20
- 二进制(以0b/0B开头):0b010,-0B010
- 八进制(以0o/0O开头):0o123,-0O567
- 十六进制(以0x/0X开头):0x9a,-0X89
3.2 浮点数类型
与数学中实数的概念一致,带有小数点及小数的数字
存在不确定尾数问题
这是由于计算机进行计算是利用二进制进行计算,但我们输入十进制数,计算机要先将十进制数转换为二进制数,然后再开始计算,计算完后,由于计算机只能精确到小数点后53位,体现在十进制数上就是小数点后16位,利用计算机进行计算的误差被控制在10-16之内,这就是不确定尾数
#不确定尾数示例
print(0.1+0.2)
0.1+0.2 == 0.3
输出:
0.30000000000000004
False
科学计数法
使用字母E/e作为幂的符号,以10为基数
格式:e 表示a*10b
4.3e-4
输出:
0.00043
3.3 复数类型
与数学中复数概念一致,但是用j表示复数单位
- z.real:获得复数z的实部
- z.imag:获得复数z的虚部
z=348-49.7j
print('实部:{},虚部:{}'.format(z.real,z.imag))
输出:
实部:348.0,虚部:-49.7
3.4 数值运算操作符
操作符及使用 | 描述 |
---|---|
x + y | x加y |
x - y | x减y |
x * y | x乘y |
x / y | x除y |
x//y | x/y的整数商 |
-y | y的负值 |
x % y | 返回x/y的余数 |
x ** y | x的y次幂,当y小于1时,可开根号 |
增强操作符
格式: x+=y等价于x=x+y
混合运算
数值类型间可进行混合运算,生成结果为最宽类型
整数(最窄)–>浮点数–>复数(最宽)
123+4.0 #整数加浮点数为浮点数
输出:
127.0
3.5 数值运算函数
函数及使用 | 描述 |
---|---|
abs(x) | 求绝对值 |
divmod(x,y) | 等价于 (x//y,x%y),即同时输出整数商和余数 |
pow(x,y,[z]) | 等价于 (x**y)%z,z可省略 |
round(x,[d]) | 对x四舍五入,d为保留的小数位数,默认为0 |
max(x,y,z) | 返回x,y,z中的最大值 |
min(x,y,z) | 返回x,y,z中的最小值 |
x=15
y=4
z=3
print("x的绝对值:{}\nx与y的整数除与余数:{}\ny的z次幂:{}\n保留三位小数:{}\nmax:{}\nmin:{}".format(abs(x),divmod(x,y),pow(y,z),round(34.798,2),max(x,y,z),min(x,y,z)))
输出:
x的绝对值:15
x与y的整数除与余数:(3, 3)
y的z次幂:64
保留三位小数:34.8
max:15
min:3
3.6 数值转换函数
函数 | 描述 | 适用类型 |
---|---|---|
int(x) | 将x变为整数,舍弃小数部分 | float |
float(x) | 将x变为浮点数,增加小数部分 | int |
complex(x) | 将x变为复数,增加虚部 | int float |
x=12.345
y=34
print('转换成整数为:{:=^6x}\n转换成浮点数为:{:*<10.3f}\n转换成复数为:{:&>18}'.format(int(x),float(y),complex(x)))
输出:
转换成整数为:==c===
转换成浮点数为:34.000****
转换成复数为:&&&&&&&(12.345+0j)