本篇根据老师画的重点基本上将期末考点都囊括了
如果发现有错误或遗漏欢迎各位在学习群里指正
可能看起来稍微有点多,但其实大部分都是代码
所有代码块都可以直接粘到编译器里执行,会报错的代码我都加了注释
(ง •_•)ง,加油
Python 语言基础
python规范
命名规则
必须以下划线或字母开头
前后单下划线为系统变量
双下划线开头为类的私有变量
关键字不能用作变量名
注释
单行注释以 # 开头
多行注释可用多个 # 或者用 三引号(文档注释)
多行语句
行尾使用反斜线(\)来续行
同一行写多条语句
语句间用分号(;)分隔
输入输出
输出print()
print默认在末尾换行
a = 1
b = 2
c = 3
# 直接输出多个变量
print(a,b,c) # 输出:1 2 3
# 使用 end参数用指定的字符替换末尾的换行符
print(a,end='@') # 输出:1@
# 使用format
print('a={}'.format(a))# 输出:a=1
print('a={0},b={1},c{2}'.format(a,b,c))# 输出:a=1,b=2,c3
输入input()
input输入的始终是字符串,需要转换为其他数据类型使用
python 数据类型
六个标准数据类型
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Sets(集合)
Dictionary(字典)
Number
包括:int(整型)、float(浮点型)、bool(布尔型)、complex(复数)、long(长整型)
清楚哪些值转换为布尔类型后值是False
print(bool([])) # 输出:False
print(bool('')) # 输出:False
print(bool({})) # 输出:False
print(bool(())) # 输出:False
# 注意下面两个的区别
print(bool(0)) # 输出:False
print(bool('0')) # 输出:True
浮点数的内置函数运算会有误差,也就是小数的精度问题
String
字符串属于序列,除此之外还有:元组、列表(集合和字典不是序列类型)
单引号和双引号可以互换,也可以互嵌
三引号表示多行字符串(也可以作为文档注释)
另外:三引号内可以直接使用回车、制表符,可以不使用转移字符来表示
字符串常用操作
连接和重复
print(‘hello’*3,’ wor’+’ld’) # 输出:hellohellohello world
字符串的切片(左闭右开)
word = 'hello world'
print(word[0:5]) # 输出:hello
print(word[:5]) # 输出:hello
print(word[1:]) # 输出:ello world
print(word[:]) # 输出:hello world
print(word[0:5:2]) # 输出:hlo
print(word[2:-2]) # 输出:llo wor
print(word[-2:2]) # 输出空串
转义字符
要注意这种复杂的转义字符一起输出
在字符串内的“\r”、”\t”、”\n”等字符,会转换为空白字符(回车符、水平制表符、换行符……)
printf('hello\tworld') # 输出:hello world
Raw字符串(字符串内不转义)
字符串前缀为’R’或‘r’
print(r‘hello\tworld’) # 输出:hello\tworld
变量及其赋值
简单赋值
a = 1
多目标赋值
a=b=c=1 # 这种情况下a、b、c都是引用同一个变量
这样会报错
a=(b=c=1) a=(b=1)
序列赋值
左边是元组、列表表示的多个变量,右侧是元组、列表或字符串等序列表示的值。
序列元素个数必须和变量个数相等,否则会出错
在变量名前使用“*”创建列表对象引用
a,b = 1,2 # 省略括号的元组赋值
(c,d) = (2,3) # 元组赋值
[e,f] = [4,’5’] # 列表赋值
(g,h) = [‘6’,7] # 元组和列表可以交叉赋值
(x,y,z) = ‘abc’ # 字符串赋值,x=‘a’,y=‘b’,z=‘c’
(i,j) = (8,9,10) # 这是错误的,变量和值的个数必须相等
在变量名前使用“*”创建列表对象引用
x,*y = ‘abcd’
print(x,y) # 输出:a [‘b’,’c’,’d’]
运算符和表达式
包括:算术运算符、关系运算符、字符串运算符、逻辑运算符。
算术运算符和表达式
算术运算符包括:加(+)、减(-)、乘(*)、除(/)、取余(%)、整除(//)、幂运算(**)
a+=1和a=a+1等价,a-=1、a//=2等也类似
要注意这种复杂的表达式的运算优先级
int(8 * math.sqrt(36) * 10 ** (-2) *10 + 0.5)/10
运算顺序如下:
int(8 * 6 * 10 ** (-2) * 10 + 0.5)/10
10**(2)=0.01
8 * 6 = 48
int(48 * 0.01 * 10 + 0.5 )/10
int(5.3)/10
5/10
0.5
逻辑运算符
and(逻辑与),or(逻辑或),not(逻辑非)
关系运算符
==(等于)、!=(不等于)、<>(不等于)、>(大于)、=(大于等于)、<=(小于等于)
运算符的优先级
最高优先级的三个运算符(优先级由高到低):** 幂运算、~ 安位取反、- 负号
最低优先级的几个运算符(优先级由高到低):| 按位或、< > <= >= == != 关系运算符、not and or逻辑运算符
字符串运算符
下面这些运算对于列表、元组都有效(因为它们同属序列类型)
字符串连接(+)
print('a'+'b') # 输出:ab
重复字符串(*)
print('a'*3) # 输出:aaa
索引字符串( [] )
a='hello'; print(a[1]); # 输出:e
截取字符串( [:] )
print(a[1:4]) # 输出:ell
成员运算符( in )
print('e' in a) # 输出:True
成员运算符( not in )
print('e' not in a) # 输出:False
Raw字符串( r/R )
print(R'he\tllo') # 输出:hello\nllo
格式字符串(%)
print('hello %s%s' %('wor','ld')) # 输出:hello world
格式化
%c(转换为字符)
print('%c' %('hello')) # 报错,必须是ASCII码值或者一个字符,否则会出错
%r(使用repr()进行字符串转换)
print('%r' %('hello')) # 输出:'hello'
%s(使用str()进行字符串转换)
print('%s' %('hello')) # 输出:hello
.format() 格式化
print('a={}'.format('a')) # 输出:a=a
repr()函数和str()函数的区别就在于接受值和返回值不同
repr()函数和str()函数,分别会调用输入对象的__repr__()、__str__()特殊方法
%d或%i(转换为有符号十进制数)
print(‘%d’ %(-10)) # 输出:-10
%u(转换为无符号十进制数)
print('%u' %(-10)) # 输出:-10
有无符号是指在二进制下,最高位用来表示实际的数或是单纯表示正负
%o(转换为无符号八进制数)
print('%o' %(100)) # 输出:144
%x或%X(转换为无符号十六进制数)
print('%x' %(100)) # 输出:64
%e或%E(转换成科学计数法)
print('%e' %(1000)) # 输出:1.000000e+03
%f或%F
print('%f' %(100) # 输出:100.000000)
格式化操作辅助符
print('开始%10.2f结束' %(7.2222)) # 输出:开始 7.22
%10.2f 表示:最小总长度为10,不足用前导空格补齐,长度大于等于10则正常显示(这里的长度不包括小数点)
位运算符
异或:二进制数逐位对比相同为0,不同为1
10^2==8 1010 异或 0010 结果为:1000
运算符
说明
&
按位与
|
按位或
^
按位异或
~
按位去反
<<
按位左移
>>
按位右移
python 常用函数
数据类型转换函数
重点掌握加粗的函数