首先,博主是自学的Python,肯定会有错误emmmm希望大家不要喷我。。。如果有错误或者哪里我没有写清楚的,欢迎大家留言指出,在这里先感谢大家啦。现在我们进入正题!!!
一、数据类型
一、数值类型
Q1:Python里面怎么做简单的加减乘除?
Q2:怎样方便的把计算结果保存下来,方便下次计算?
Q3:Python中小数是怎么计算的呢?小数和整数的混合运算计算结果是怎样的呢?
Q4:Python中总共有多少数值类型?
数值类型一共有四种:
浮点型;float;
整型:int;
复数型:complex;
布尔型:bool
变量命名规则:变量名开头不能是数字,不能是纯关键字(例如:list,tuple等)
1.常用运算符
+(加) -(减) *(乘) /(除) %(取余数) // (默认向下取整) **(次方)
向下取整:不管小数点后面的数字,直接取前面的
向上取整:不管小数点后面的数字,直接进一位
要想向上取整可以导入math模块
import math #导入
b = math.ceil(5/2) #向上取整
print(b)
2.decimal的运算
python计算是不精确的,要想精确计算需导入decimal
mport decimal #导入
c = decimal.Decimal('2.2') #精确数计算
d = decimal.Decimal('2')
print(c-d)
3.布尔型的计算
布尔类型不是用来计算,是用来判断,首字母必须大写
4.复数
e = 1+1j
这里j前的1必须写
二、序列类型
Q1:在Python中如果我想表示字母怎么办呢?
Q2:在Python中有东西既可以放字符串又可以放数值吗?
Q3:字符串和元组不可变,那如果一定要改变呢?
Q4:不同的序列类型可以相互转化吗?
Q5:列表和元组有什么区别呢?
1.字符串:
Q1:字符串也可以像其他数据类型一样进行增删改吗?
Q2:如果可以的话,那是要用什么方法呢?
放字母单引号和双引号没有实质区别
a = 'abc' #字符串(string)
print(a)
1. 字符串的增删改查
#增
# 字符串拼接 +
a = 'hello'
b = 'world'
print(a+b)
#删
st3 = 'asdasdasdwqezc'
print(st3.replace('q','uuu')) #有内容时表示替换
print(st3.replace('q','')) #为空格时表示删除
#改
st2 = ' asdasd asdwqezc '
print(st2.upper()) # 转化为大写
print(st2.lower()) # 转化为小写
print(st2.lstrip()) #去掉左边的空格
print(st2.rstrip()) #去掉右边的空格
print(st2.strip()) #去掉全部空格
print(st2.capitalize()) #首字符大写
print(st2.title()) #每个单词首字母大写
print(st2.split('s')) #切割,以s切割
#查
st = 'asdasdasdwqezc'
print(st.count('a')) # count 计数
print(st.index('s',3)) #查询元素索引,3表示从索引为3的开始查找
print(st.find('a',9)) #查询元素索引,可返回负数值
print('123'.isdigit()) #判断全部为数字
print(st.isalpha()) #判断全部为字符
print(st.endswith('a')) #判断最后一个字符是什么
print(st.startswith('a')) #判断最开始的字符是什么
print(st.islower()) #判断字符串内所有内容是否为小写
print(st.isupper()) #判断字符串内所有内容是否为大写
2.字符串的转义
字符前面加上 \ ,字符就不再表示字符本身的意思,表示ASCII码中不能显示字符,常见有下:
\n 换行
\t 水平制表符
\b 退格
\r 回车,当前位置移到本行开头
\\ 代表反斜杠 \
\’ 代表一个单引号,同样的"等符号也可以这么输出
\0 代表一个空字符
\a 系统提示音
在python中如果要去掉字符串的转义,只需要在字符串前面加上r’asd\aqwe’(在后面文件那一章的时候大家会看到详细用法)
print('asd\nqwe') #换行
print('asd\tqwe') #水平制表符(相当于加空格)
print('asd\bqwe') #退格(删除前面一个)
print('asdqzxc\rwe') #回车
print(r'asd\aqwe') #去掉字符串的转义
3.字符串编码
Q1:上面我们知道了了在python内部要对字符串进行是为了输出和传输,那python中字符串的可以直接在网络上传输吗?
Q2:如果不可以的话,python内部是怎么做的呢?
a = '张三'.encode(encoding='UTF-8') #编码
b = '张三'.encode(encoding='gbk')
print(a)
print(b)
print(a.decode())
print(b.decode(encoding='gbk'))
字符串编码的作用
Python统一了编码,这样Python在内部处理的时候不会因编码不同而出现程序不能正常执行的问题。
Python会自动根据系统环境选择编码,但是经常在文件传输的过程中,
会遇到各种不同的编码,这个时候就需要我们去处理编码问题。
4.字符串的拼接
st = 'hello'
st1 = 'world'
st2 = 'zs'
st3 = '20191216'
#1.拼接
#(1).使用 +
print(st+st1+st2)
#(2).格式化字符串 : ' %s %s %s '%(str1,str2,str3)
a = '%s %s %s'%(st,st1,st2)
print(a)
b = '%s年%s月%s日'%(st3[0:4],st3[4:6],st3[6:8])
print(b)
#(3).使用join : ’’.join([str1, str2, str3])
c = ' '.join([st,st1,st2]) #''中写什么就拼出什么,不止字符串()元组和[]列表都可以
print(c)
# (4).使用 format
# ' {} {} {} '.format(obj1,obj2,obj3)
# ' {0} {1} {2} '.format(obj1,obj2,obj3)
# ' {1} {0} {2} '.format(obj1,obj2,obj3)
# ' {n0} {n1} {n2} '.format(n1=obj1,n0=obj2,n2=obj3)
d = '{}{}{}'.format(st,st1,st2)
e = '{1}{0}{2}'.format(st,st1,st2) #数字表示索引
f = '第一句{} 第二句{} 第三句{}'.format(st,st1,st2)
g = '{n1} {n2} {n3}'.format(n1='a',n2='b',n3='c')
print(d)
print(e)
print(f)
print(g)
5.字符串格式化
print('%d'%123) #%数字 只留整数部分
print('%f'%123) #%浮点数
print('%6.3f'%10.2) #%总共6位,小数点后面3位
print('%-16.3f'%10.2) #%左对齐
print('%s'%'asd') #%字符串 掌握
print('%r'%'asd') #%字符串(有引号) 掌握
print('%5s'%'123') #%格式化长度
print('%c'%65) #%ASCLL字符
print('%o'%9) #%8进制
print('%x'%17) #%16进制
#format
print('{:.2f}'.format(12.456)) #2表示保留小数点后两位
print('{a:.4f}'.format(a = 12.456))
print('{:.3%}'.format(0.228)) #百分比格式,3表示保留小数点后面3位
print('{:o}'.format(9)) #o为8进制,x为16进制,b为2进制
print('{a:<10}'.format(a = 12.333)) #左对齐,长度为10
print('{a:c<10}'.format(a = 12.333)) #< 左对齐,长度为10,用c替换
print('{a:c>10}'.format(a = 12.333)) #> 右对齐,长度为10
print('{a:c^10}'.format(a = 12.333)) #^中间对齐,长度为10
2.列表
什么都可以放
Q1:前面我们知道了怎么对列表的取值,那有什么方法对列表进行操作呢?
Q2:列表除了增删改查还有没有其他的方法?
li = [1,2,3,True,'a','b'] #列表(list)
print(li)
1.列表的增删改查
#增
# append 追加
# insert 插入
# extend 添加序列(迭代)
a = [1,2,3,4,5]
a.append('a') #追加
print(a)
a.insert(2,'b') #插入,2是索引,'b'是插入的值
print(a)
a.extend([6,7,8]) #添加序列类型(只能是序列类型 元组,列表,字符串)
a.extend((9,'c'))
a.extend('def')
print(a)
#删:
# pop 删除对应索引
# remove 删除对应元素
# clear 删除所有
a.pop(0) #删除对应索引,如果括号里面没有值默认删除最后一位
del a[0:2] #同上,但是可以删除多个。可以索引,可以切片
print(a)
a.remove('f') #删除对应元素,若有相同的默认删除第一个
print(a)
#改:
li[0] = ' list '
a[0] = 1
print(a)
# 查:
print(a.index(4)) #查询索引位置.相同的默认第一个
print(a.count(6)) #查找出现次数
2.其他方法
# copy 复制
# reverse 逆序
# sort 正序
b = a.copy() #复制
c = [1,9,8,6,7,2,3,5,4]
c.reverse() #逆序
print(c)
c.sort() #只能同种类型间进行排序
print(c)
c.reverse()
print(c)
3.元组
Q1:元组有哪些方法呢?
什么都可以放
tu = (1,True,'啦啦啦',(1,2),[4,5]) #元组(tuple)
print(tu)
1.元组的方法
(元组不可直接变,如果需要改变,转化成列表即可,元组中只有 count 和 index 方法,方便查找元组中的数据)
# 查:
tu = (1,1,2,3,4,4,4,5,6,'a','b')
print(tu.index('a')) #查询元素索引
print(tu.count(1)) #计数
2.强制转换,查看内存地址
tu1 = list(tu) #强制转换为列表
print(type(tu1))
print(id(tu1)) #查看内存地址
4(*).bytes二进制序列类型
Q1:Python中的序列类型还有吗?
bytes和bytearray
a = bytes(3) #3表示二进制对象的长度,以0填充字节对象
print(a)
print(a[0]) #可以用切片索引取值,故也是序列类型
b = bytearray(3) #指定长度的零填充字节对象
print(b)
print(bytearray(b'abc')) #二进制字符串对象
5.序列类型的取值(索引取值,切片)
li = [1,2,3,True,'a','b']
print(li[1]) #取里面的值,索引下标从0开始
print(li[0:2]) #取一段的值,切片(左闭右开)
print(li[0:6:2]) #间隔取值,2表示步长(即从1开始走2步)
print(li[6:0:-2]) #倒序取值,
print(li[-1]) #从后往前取值
三、散列类型
1.字典:
Q1:在Python中有键值对这样的数据类型吗?
键值对,成对形式出现
唯一性:键不能重复,值能重复,
有序性:通过键找到对应的值,
可变性:键是不可变的,但字典是可变对象。
1.两种定义方式(直接定义或者使用dic函数)
di = {
'name':'李四',