基本数据类型分类
分类一:
1、扁平序列
这些序列只能容纳一种类型,存放的是值而不是引用
例如:str、bytes、bytearray、memoryview和array.array
2、容器序列:
这些序列能存放不同的类型的数据,存放的是他们所包含的任意类型对象的引用
例如:list、tuple、collections.deque
3、区别:
扁平序列是一段连续的内存空间,由此可见扁平序列其实更加紧凑,但是里面只能存放诸如字符、字节和数值这种基础数据类型。
分类二:
可变序列:list bytearray array.array collections.deque和memoryview
不可变序列:tuple、str和bytes
1、int 整数
bit_length() 二进制长度
a = 5 # 二进制为101 print(a.bit_length())#3
2、str字符串
字符串是不可变的对象,所以任何操作对原字符串不会产生影响。
(1)索引,就是下标,从0开始,最大值是字符串长度-1
s = "abcdddd" print(s[5]) #格式:字符串[索引下标]
(2)切片,使用下标来截取部分字符串
语法:str[start:end:step]
原则:顾头不顾尾
step:步长,如果是整数,则从左到右取,如果是负数,从右向左取
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
s = "ABCDEFGHIJKL" #切片 print("从头到尾:%s"%(s[0:])) #从头到尾 print("取中间的一部分:%s"%(s[0:3])) #顾头不顾尾 print("跳着取:%s"%(s[0:6:2])) #间隔一个取 print("反向从头到尾:%s"%s[::-1]) #-1代表从后向前取 print("反向截取一部分:%s"%(s[-1:-5:-1])) print("反向跳着截取:%s"%(s[-1:-5:-2]))
(3)字符串转换大小写
s = "LiangYing" print(s.capitalize()) #整句首字母大写 print(s.lower()) #全部小写 print(s.upper()) #全部大写 print(s.swapcase()) #大小写翻转 print(s.title())#除了以字母之外的字符隔开 ,每个单词首字母大写
应用:验证码
#验证码不区分大小写 text = input("请输入验证码:") if text.upper() == "aqPt".upper(): print("验证码输入正确")
(4)切片
#居中 拉长到16字符,并以*填充 s = "liangying" print(s.center(16,"*")) # ***liangying**** #更改tab的长度,默认更改为8 s_1 = "al ex wusir" print(s_1.expandtabs()) #al ex wusir #去空格 s_2 = " liang ying " print(s_2.strip()) #去掉头尾的空格 print(s_2.lstrip()) #去掉左边的空格 print(s_2.rstrip()) #去掉右
居中 拉长到16字符,并以*填充 s = "liangying" print(s.center(16,"*")) # ***liangying**** #更改tab的长度,默认更改为8 s_1 = "al ex wusir" print(s_1.expandtabs()) #al ex wusir #去空格 s_2 = " liang ying " print(s_2.strip()) #去掉头尾的空格 print(s_2.lstrip()) #去掉左边的空格 print(s_2.rstrip()) #去掉右边的空格 #strip()也可以去掉指定的字符串 s_3 = "liang123ying123" print(s_3.strip("123")) #liangying #字符串替换 print(s_3.replace("123","huang")) print(s_3.replace("123","**",1)) #把123换成**,换1次 #字符串切割 print(s_3.split('i')) #切割的结果是个list print(s_3.split('i',1)) #1指的是切割一次 #如果切割依据在头或者尾,可能会出现空字符串
应用:模拟用户登录,忽略用户输入的空格
username = input("username:").strip() password = input("password:").strip() if username == "liang" and password == "123": print("succeed")
(5)查找
s = "liangying" print(s.find("yi")) #查找yi出现的位置,没有的话返回-1 print(s.find("yi",0,5)) #从下标0到5,查找yi print(s.startswith("li")) #判断字符串是否以li开头 print(s.endswith("ng")) #判断字符串是否以ng结尾 print(s.index("i")) #找索引,找不到报错
s.count("要查找的目标字符串") 返回查找到的个数
(6)条件判断
s = "123liangying&&" print(s.isalnum()) #判断字符串是否由字母或数字组成 print(s.isnumeric()) #是否由数字组成,识别壹贰中文 print(s.isdigit())#也是数字,不如上面的强大 print(s.isalpha())#是否以字母组成
应用:用算法判断某一个字符串是否是小数
#判断一个字符串是否是小数 while True: text = input("请输入字符串:") text = text.replace("-","") #以防出现负数,先替换掉 if text.count('.') == 1 and not text.startswith('.') and not text.endswith('.'): #小数一定有小数点 不以小数点开头 不以小数点结尾 lis = text.split('.') #用小数点进行分割 因为只有一个小数点,所以肯定分割成两部分 if len(lis) == 2 and lis[0].isdigit() and lis[1].isdigit(): #分割成的两部分都是数字 print("小数") break else: print("肯定不是小数")
(7)计算字符串的长度
len(str) 内置函数
(8)迭代
#遍历字符串 - 1 s = "liangying" for i in s: print(i) # - 2 index = 0 while index <= len(s)-1: print(s[index]) index += 1
3、bool 布尔值
判断真假,True False
转换问题:
0是False 非0是True int(bool) True是1, False是0
str => bool bool(str) 空字符串是False, 不空是True
bool => str str(bool) 把bool值转换成相应的"值"