python基础
print()函数:
可以输出的内容有哪些:
输出数字,直接写
输出字符,加单引号或者双引号
输出含有运算符的表达式
将内容输出的目的地:
-
显示器(控制台)
-
文件
fp=open('D:/text.txt','a+')//a+表示以读写的方式打开文件,没有就创建,有就追加 print('helloworld',file=fp) fp.close() #将数据输入到文件中,注意:1.所指定的盘符存在 2.使用file=变量名
输出不换行:
print('hello','world','python')
转义字符:
\跟实现转义功能的首字母
\n换行符
\t水平制表符,补齐四个制表位(空格位)
\r回车,在一行输出,会覆盖前面的内容
\b回退一格
**书写网址:**http:\\\\www.baidu.com 四个斜杠代表两个斜杠
原样输出:在 ’ 面前跟\
整句原样输出:
print(r(或者R)'hello\nworld')
显示:hello\nworld
注意事项:最后一个字符不能是反斜线(最后一个字符指逗号内,可以出现两个反斜杠)
二进制与字符编码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TuOtqmFn-1604908476092)(C:\Users\14301\AppData\Roaming\Typora\typora-user-images\image-20201103205650529.png)]
Unicode:无论中英文,统统用两个字节表示
UTF-8:英文用一个字节,中文用两个字节
print(chr(ob100111001011000))
输出:乘
print(ord('乘'))
输出:20056
标识符和保留字
保留字:
[‘False’, ‘None’, ‘True’, ‘peg_parser’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
标识符规则:
- 字母,数字,下划线
- 不能以数字开头
- 不能是保留字
- 严格区分大小写
变量的定义与使用
变量名 = 值
变量由三部分组成:
- 标识:表示对象所存储的内存地址,使用内置函数id(obj)来获取
- 类型:表示的是对象的数据类型,使用内置函数type(obj)来获取
- 值:表示对象所储存的具体数据,使用print(obj)可以将值进行打印输出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WRzWhdvI-1604908476094)(C:\Users\14301\AppData\Roaming\Typora\typora-user-images\image-20201103212334026.png)]
数据类型:
int 整数类型
- 十进制–>默认的进制
- 二进制–>以0b开头
- 八进制–>以0o开头
- 十六进制–>0x开头
float 浮点类型
使用浮点数进行计算时,可能会出现小数位数不确定的情况
解决方案
- 导入模块decimal
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))#结果是:3.3
bool 布尔类型
- 布尔类型可以转化为整数
- Ture->1
- False->0
str 字符串类型
又称为不可变字符串序列
-
可以使用单引号,双引号,三(单,双)引号来定义
-
单引号和双引号定义的字符串必须在一行
‘附近,有人’
“附近,有人”
-
三引号定义的字符串可以分布在连续多行
附近
有人
数据类型转换
数据类型转str 函数str()
数据类型转int 函数int()
注:字数串为整数数字字符串,才能转
数据类型转float 函数float()
**注:**字数串为数字字符串,才能转(无须要求整数)
注释
-
单行注释:#
-
多行注释:没有单独的多行注释标记,将一对三引号之间的代码称为多行注释
-
中文编码声明注释:在文件开头加上中文声明注释,用以指定源码文件的编码格式
coding:utf-8
input()输入函数
- 作用:接收来自用户的输入
- 返回值类型:输入值的类型为str
- 值的存储:使用=对输入的值进行存储
eg: present = input(‘你想要什么礼物’)
变量 = input(‘提问内容/提示语’) #需要回答
运算符
-
算数运算符
-
标准算数运算符
+,-,*,/,//(整除)
注:整除向下取整
一正一负整除向下取整
-
取余运算符
%
同为正数取余
一正一负公式:余数=被除数-除数*商
-
幂运算符
**
2**2(表示2的2次方)
-
-
赋值运算符
=:赋值运算符,执行顺序是 右–>左
支持链式赋值、支持参数赋值(+=,-=等)
支持系列解包赋值(a,b,c=10,20,30)
赋值运算符的交换操作
a,b=10,20 print('交换前:',a,b) a,b=b,a#交换完毕 print('交换后:',a,b)
-
比较运算符
- 大于>,<,>=,<=,!=
- ==:对象value的比较
- is,is not:对象的id比较
-
布尔运算符
- and(且)
- or(或)
- not(非)
- in(包含)
- not in(不包含)
-
位运算符
& 位与:对应数位都是1,结果数位才是1,否则为0
| 位或 :对应数位都是0,结果数位才是0,否则为1
<<左移位运算符:高位溢出舍弃,低位补0
》》右移为运算符,低位溢出舍弃,高位补0
运算符优先级
** > *,/,//,% > +,- > <<,>> > & > | > >,<,>=,<=,==,!= > and > or >=
算术运算>位运算>比较运算>布尔运算>赋值运算
组织结构
python一切皆对象,所有对象都有一个布尔值
bool()函数,获取对象的布尔值
以下对象的布尔值为false:
- False
- 数值0
- None
- 空字符串
- 空列表
- 空元组
- 空字典
- 空集合
其他对象的布尔值都为true
选择结构
-
单分支结构
if 条件表达式:
执行操作(缩进表示层次结构)
-
双分支结构
if 条件表达式:
执行操作
else 条件表达式:
执行操作
-
多分支结构:
if 条件表达式:
条件执行体
elif 条件表达式:
条件执行体
elif 条件表达式
条件执行体
[else:]
条件执行体
嵌套if
if 条件表达式
if 条件表达式
else:
else:
条件表达式
-
条件表达式是if…else的简写
-
语法结构:
x if 判断条件 else y
如果判断条件为true,返回x,如果判断条件为false,返回y
pass语句
-
语句什么都不做,只是一个占位符,用在语法上需要语句的地方
-
什么时候使用:先搭建语法结构,还没想好代码怎么写的时候
-
哪些语句可以使用:
-
if语句的条件循环体
执行体可以写pass
-
for-in语句的循环体
-
定义函数时的函数体
-
range()函数
-
用于生成一个整数序列
-
创建range对象的三种方式
- range(stop):创建一个(0,stop)之间的整数序列,步长为1,不包含stop
- range(start,stop):包含start,不包含stop,步长为1
- range(start,stop,step):包含start,不包含stop,步长为step
-
返回值是一个迭代器对象,要查看range中的整数序列,用list()函数
eg: list(range(0,10)) #list是列表
-
判断指定的整数在序列中是否存在:in,not in
eg: 10 in range(0,10)
循环结构
-
while 条件表达式
条件执行体(循环体)
-
for-in循环
- in表达从(字符串,序列等)中依次取值,又称为遍历
- for-in遍历的对象必须是可迭代对象
-
for-in的语法结构
for 自定义的变量 in 可迭代的对象:
循环体
注:如果用不到自定义变量,可用 _(下划线)代替
break语句:
- 用于结束循环结构,通常与分支结构if一起使用
continue:
- 同于结束当前循环,进入下一次循环
else语句:
-
if … else
-
while … :
else
没有碰到break时执行else
-
for …
else
没有碰到break时执行else
嵌套循环
end=’\t’ 不换行输出,
二重循环中的break和continue
都是只对当前循环有效
列表
相当于数组,可以存储不同的数据类型
列表的创建:
-
使用中括号
eg: lst=[‘张三’,‘李四’]
-
调用内置函数list()
eg: lst=list([‘张三’,‘李四’])
特点:
-
列表的元素按顺序有序排序
-
索引映射唯一数据
负索引倒退查找
-
列表可以存储重复数据
-
任意数据类型混存
-
根据需要动态分配和回收内存
列表的查询
-
获取列表中指定元素的索引 index()
-
index(str):获取str在列表中第一次出现的索引位置
如果没有,报错 Value Error
-
lst.index(str,1,3)) 从列表的1到3号索引中(不包括3号),查询str出现在列表中的索引
-
-
获取列表中的单个元素
索引为正向和逆向,正向是0到n-1,逆向是-n到-1
指定索引不存在,报错, IndexError
-
获取列表中的多个元素
切片:
语法格式:
列表名[start : stop : step]
start:从什么位置开始切
stop:切多长
step:步长
切片的结果:原列表片段的拷贝
切片的范围:[start,stop),从start开始,不包括stop
step默认为1
eg:
[10:] 从10开始切片,默认切到最后,步长为1
[1:6:1] 从1的位置开始切,切到6停止,不包括6,步长为1
step为正,正切,负,则反切
列表元素的增加操作
-
append():在列表的末尾添加一个元素
lst = [10,20,30] lst.append(100)
-
extend():在列表的末尾至少添加一个元素
lst.extend(lst2)
-
insert():在列表的任意位置添加一个元素
剩余元素往后移动一位
lst.insert(1,90) 在lst索引为1的位置添加一个元素为90
-
切片:在列表的任意位置添加至少一个元素
lst[1:]=lst2 保留索引为1之前的(包括1)元素,后跟lst2内容
列表元素的删除操作
-
remove(列表元素):
- 一次删除一个元素
- 重复元素只删除第一个
- 元素不存在抛出ValueError
-
pop(列表索引):
- 删除一个指定索引位置上的元素
- 指定索引项不存在抛出IndexError
- 不指定索引,删除列表中最后一个元素
-
切片:一次至少删除一个元素(会产生一个新的列表对象)
不产生对象:
lst[1:3] = [] 将一到三位置切除替换成空列表,不产生新对象
-
clear():清空列表
lst.clear()
-
del:删除列表
del lst
列表元素的修改操作
-
修改一个值
lst[1] = 3 将索引为1的元素内容修改为3
-
修改多个值
lst[1:3] = [1,2,3,4] 将索引为1到3的位置(不包括3)替换[1,2,3,4] (可变长度)
列表元素的排序操作
-
常见的两种方式:
-
调用sort(),列表中的所有元素按照从小到大的顺序进行排序,可以指定
reverse=True,进行降序排序
eg:lst.sort()
eg:lst.sort(reverse=True)
不产生新列表
-
调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变
eg:newlst = sorted(lst)
eg:newlst = sorted(lst,reverse=True)
产生新列表
-
列表生成式
格式:lst = [ i for i in range(1,10)]
将0到9存入列表lst,在第一个i的位置可以写表达式,如:
lst = [i*i for i in range(1,10)]
字典
可变序列,以键值对的方式存储数据,字典是一个无序的序列
字典的key属性必须为不可变序列,比如字符串
字典的创建
- scores = {‘张三’:100,‘李四’:50,‘王五’:20}
- 内置函数:dict(name = ‘张三’,age = 20)
字典的常用操作
-
获取字典中的元素
-
[] eg:scores[‘张三’]
如果不存在指定的key,抛出keyError
-
get()方法 eg:scores.get(‘张三’)
如果不存在指定的key,返回None,可以通过参数设置默认的value,以便指定额key不存在时返回默认值
eg:scores.get(‘张三’,80)
-
-
key的判断
- in 指定key在字典中返回True eg:‘张三’ in scores
- not 操作与in相反
-
字典元素的删除:del scores[‘张三’]
clear():清空字典
-
字典元素的新增:scores[‘赵六’] = 66
-
获取字典视图的三个方法
-
keys():获取字典中的所有key
keys = scores.keys() print(keys) #输出获取到的key,类型为:dict_keys print(list(keys)) #将keys转化为列表
-
values():获取字典中的所有value
-
items():获取字典中所有的key-value对,以元组形式存储,如果转换为列表,那么列表中的元素为一个个元组
-
-
字典元素的遍历
for item in scores: print(item)
输出为字典中的key值
字典的特点
- 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
- 字典中的key必须是不可变对象
- 字典中的元素是无序的
- 字典也可以根据需要动态的伸缩
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
字典生成式
items = [‘张三’,‘李四’,‘王五’]
prices = [99,98,97]
变成:{‘张三’:99,‘李四’:98,‘王五’:97}
内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元祖,然后返回由这些元组组成的列表
lst = zip(items,prices)
{ item : price for item,price in zip(items,prices) }
{ 表示字典中key的表达式:表示字典中value的表达式 for 自定义表示key的变量,自定义表示value的变量 in 可迭代对象}
如果zip的时候元素不想等,会以元素少的一方作为基准
. values():获取字典中的所有value
- items():获取字典中所有的key-value对,以元组形式存储,如果转换为列表,那么列表中的元素为一个个元组
-
字典元素的遍历
for item in scores: print(item)
输出为字典中的key值
字典的特点
- 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
- 字典中的key必须是不可变对象
- 字典中的元素是无序的
- 字典也可以根据需要动态的伸缩
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
字典生成式
items = [‘张三’,‘李四’,‘王五’]
prices = [99,98,97]
变成:{‘张三’:99,‘李四’:98,‘王五’:97}
内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元祖,然后返回由这些元组组成的列表
lst = zip(items,prices)
{ item : price for item,price in zip(items,prices) }
{ 表示字典中key的表达式:表示字典中value的表达式 for 自定义表示key的变量,自定义表示value的变量 in 可迭代对象}
如果zip的时候元素不想等,会以元素少的一方作为基准