python
转义字符与原字符
转义字符
就是反斜杠+想要实现的转义功能首字母
-
当字符串中包含反斜杠、单引号和双引号等有特殊用途的字符时,必须使用反斜杠对这些字符进行转义(转换一个含义)
反斜杠:\\ 单引号:\' 双引号:\"
-
当字符串中包含换行、回车、水平制表符或退格等无法直接表示的特殊字符时,也可以使用转义字符
换行:\n 回车:\r 水平制表符:\t --一个制表符占4个字符 退格:\b
原字符
就是不希望字符串里的转义字符起作用,在字符串前写上r或者R
标识符和保留字
保留字
有一些单词被赋予了特定的意义,给对象命名时不能使用
import keyword;
print(keyword.kwlist); --查看保留字
标识符
变量、函数、类、模块和其他对象的起的名字就叫标识符
规则:
- 字母、数字、下划线
- 不能以数字开头
- 不能是保留字
- 严格区分大小写
变量
变量时内存中一个带标签的盒子
- 变量由三部分组成:
- 表示:表示对象所存储的内存地址,使用内置函数id(obj)来获取
- 类型:是对象的数据类型,使用内置函数type(obj)获取
- 值:对象所存储的具体数据,使用print(obj)可以将值输出
- 当多次赋值后,变量名会指向新的空间
标准数据类型
Number(数字)
整数类型int
可以表示正数、负数和零
整数的不同进制表示方式:
- 十进制》》默认
- 二进制》》以0b开头
- 八进制》》以0o开头
- 十六进制》》以0x开头
浮点数类型float
由整数部分和小数部分组成
浮点数存储不精确型:
-
使用浮点数进行计算时,可能会出现小数位不确定的情况
-
解决方法:
导入模块decimal
from decimal import Decimal print(Decimal('1.1')+Decimal('2.2'));
布尔类型bool
用来表示真或假的值
- 布尔值可以转化为整数:true–》1,false–》0
print(True+1) #2
print(False+1) #1
String(字符串)
字符串类型str
字符串又被称为不可变的字符序列
可以用单引号、双引号、三引号来定义
单引号、双引号定义的字符串必须在一行
三引号定义的字符串可以分布在连续的多行
List(列表)
变量可以存储一个元素,而列表是一个大容器,可以存储n个元素,程序可以方便的对这些数据进行整体操作
列表相当于其它语言的数组
列表的特点:
- 列表元素按照顺序有序排序
- 索引映射唯一个数据,索引从左0开始递增,从右-1开始递减
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
列表的创建与删除
创建
列表需要使用中括号[],元素之间使用英文逗号隔开
列表的创建方式:
-
使用中括号
lst1=['hello','world']
-
调用内置函数list()
lst2=list(['hello','world'])
列表的查询操作
获取列表中指定元素的索引
index()方法
-
查列表中存在N个相同元素,只返回相同元素中的第一个元素的索引
print(lst1.index('hello')) #只返回第一个元素索引
-
如果查询的元素在列表中不存在,则会抛出ValueError
-
还可以在指定的start和stop之间进行查找,查找范围包括start,不包括stop
print(lst1.index('hello',1,4))
index()
获取列表中的单个元素
- 正向索引从0到N-1
- 逆向索引从-N到-1
- 指定索引不存在,IndexError
获取列表中的多个元素
列表元素的增、删、改操作
列表元素的排序
列表推导式
Tuple(元组)
Dictionary(字典)
数据类型转换
将不同的数据类型的数据拼接在一起,就需要数据类型转换
函数名 | 作用 | 注意事项 |
---|---|---|
str() | 将其他数据类型转换成字符串 | 也可以用引号转换 |
int() | 将其他数据类型转换成整数 | 文字类和小数类字符串,无法转换成整数;浮点数转换成整数,抹零取整 |
float() | 将其他数据类型转换成浮点数 | 文字类无法转成整数;整数转成浮点数,末尾为.0 |
注释
运算符
算数运算符
-
标准算数运算符
- 加、减、乘、除、整除(//)
-
取余运算符
- %
-
幂运算符
-
**
print(2**2); --表示2的2次方
-
赋值运算符
执行顺序:右–>左
- 支持链式赋值
a=b=c=20
- 支持参数赋值
+=、-=、*=、/=、//=、%=
- 支持系列解包赋值
a,b,c=20,30,40
交换两个变量的值不用中间变量
a,b=b,a;
比较运算符
对变量或表达式的结果进行大小、真假等比较
-
>,<,>=,<=,!=
-
== #对象value的比较
-
is,is not #对象的id的比较
布尔运算符
-
and
-
or
-
not
-
in
在…中
a='helloworld' print('w' in a); #True
-
not in
位运算符
将数据转成二进制进行计算
-
位与&
对应数位都是1,结果数位才是1,否则是0
-
位或|
对应数位都是0,结果数位才是0,否则位1
-
左移位运算符<<
高位溢出舍弃,低位补0
-
右移位运算符>>
低位溢出舍弃,高位补0
运算符的优先级
程序的组织结构
对象的布尔值
python一切皆对象,所有对象都有一个布尔值
获取对象的布尔值:使用内置函数bool();
一下对象的布尔值为false:
- False
- 数值0
- None
- 空字符串
- 空列表
- 空元组
- 空字典
- 空集合
顺序结构
程序从上到西安顺序地执行代码
选择结构
程序根据选择判断条件的布尔值选择性地执行部分代码
单分支结构
语法格式:
if 条件表达式:
条件执行体
双分支结构
语法格式:
if 条件表达式:
条件执行体1
else:
条件执行体2
多分支结构
语法格式:
if 条件表达式:
条件执行体1
elif 条件表达式2:
条件执行体2
elif 条件表达式n:
条件执行体n
[else:]
条件执行体n+1
嵌套if
语法格式:
if 条件表达式1:
if 内层条件表达式:
内层条件执行体1
else:
内层条件执行体2
else:
条件执行体
条件表达式
条件表达式是if…else的简写
语法结构:
x if 判断条件 else y
运算规则:如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为y
pass语句
语句什么都不做,只是一个占位符,用在语法上需要语句的地方
什么时候用:先搭建语法结构,还没想好代码怎么写的时候
哪些语句一起使用:
- if语句的条件执行体
- for-in语句的循环体
- 定义函数时的函数体
循环结构
反复做同一件事情的情况,为循环
循环的分类
- while
- for-in
while循环
-
语法结构
while 条件表达式: 循环体
for-in循环
-
in表达从(字符串、序列等)中依次取值,与称为遍历
-
for-in遍历的对象必须是可迭代对象
-
语法结构
for 自定义的变量 in 可迭代对象: 循环体 --------------------------- for i in 'python': print(i) #依次打印p/y/t/h/o/n
-
循环体内不需要访问自定义变量,可以将自定义变量替代为下划线
for _ in range(5): print('1') #输出函数里面的内容循环5次
嵌套循环
循环结构中又嵌套了另外的完整循环结构,内层循环作为外层循环的循环体,外层循环执行一次,内层循环全部执行
九九乘法表:
for i in range(1,10):
for j in range(1,i+1): #根据i确定结束值,不包含i,+1
print(str(j)+'×'+str(i)+'='+str(i*j),end='\t') #end='\t' 不换行输出
print() #换行
二重循环中的break和continue
二重循环中的break和continue用于控制本层循环
流程控制语句
break语句
用于结束循环结构,通常与分支结构if一起使用
continue语句
用于结束当前循环,进入下一次循环,通常与分支结构if一起使用
else语句
与else语句配合使用的三种情况:
-
if...: ... else: ... #if条件表达式不成立时执行else
-
while...: ... else: ...
-
for...: ... else: ...
没有碰到break时执行else
内置函数
range()函数
用于生成一个整数序列
- 创建range对象的三种方式:
方法 | 解释 |
---|---|
range(stop) | 创建一个[0,stop)之间的整数序列,步长为1 |
range(start,stop) | 创建一个[start,stop)之间的整数序列,步长为1 |
range(start,stop,step) | 创建一个[start,stop)之间的整数序列,步长为step |
-
返回值是一个迭代器对象
-
range()类型的优点:
不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop,和step,只有当用到range对象时,才会去计算序列中的相关元素
- in与not in判断整数序列中是否存在指定的整数
输出函数print()
-
print()函数可以输出:
- 输出类容可以是数字
- 输出内容可以是字符串
- 可以是含有运算符的表达式
-
print()函数可以将内容输出的目的地:
- 显示器
- 文件
注意:指定盼复必须存在;使用file=fp;a+:如果文件不存在就创建,存在就在后面追加
fp=open('E:/text.txt','a+') print('helloworld',file=fp) fp.close();
-
print()函数的输出形式:
- 换行
- 不换行
输入函数input()
接受来自用户的输入,输入值的类型为str
变量名=input();
创建一个[start,stop)之间的整数序列,步长为step |
-
返回值是一个迭代器对象
-
range()类型的优点:
不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop,和step,只有当用到range对象时,才会去计算序列中的相关元素
- in与not in判断整数序列中是否存在指定的整数
输出函数print()
-
print()函数可以输出:
- 输出类容可以是数字
- 输出内容可以是字符串
- 可以是含有运算符的表达式
-
print()函数可以将内容输出的目的地:
- 显示器
- 文件
注意:指定盼复必须存在;使用file=fp;a+:如果文件不存在就创建,存在就在后面追加
fp=open('E:/text.txt','a+') print('helloworld',file=fp) fp.close();
-
print()函数的输出形式:
- 换行
- 不换行
输入函数input()
接受来自用户的输入,输入值的类型为str
变量名=input();