基本数据类型分类
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:
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\tex 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\tex 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")
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值转换成相应的"值"
4、list 列表
存储大量数据,用[]表示
5、tuple 元组
用()表示,不可以发生改变
6、dict 字典
用{}表示,保存key:value
7、set 集合
保存大量数据,不可以重复