一、数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示
数据类型
数字
字符串
列表
元组
字典
集合
二基础数据类型
2.1数字int
数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:
#bit_length() 当十进制用二进制表示时,最少使用的位数 i = 3 print(i.bit_length()) b = 11 print(b.bit_length())
输出:
2 4
三、布尔值bool。
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。
假 0 False。
字符串--->bool值 bool(str)
#非空字符串转换成bool True
#'' 空字符串转换成bool False
s = 'sdfa' s1 = 'a' s2 = '1' s3 = '' print(bool(s)) print(bool(s1)) print(bool(s2)) print(bool(s3))
输出:
True
True
True
False
#bool--->str值
a = str(True)
a1 = str(2 > 1)
b = str(False)
print(a,type(a))
print(a1,type(a1))
print(b,type(b))
输出:
True <class 'str'>
True <class 'str'>
False <class 'str'>
应用:
#name = '' # if name: # print('输入正确') # else: # print('请输入内容')
四、字符串str:
字符串的索引与切片
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
s1 = 'python全栈8期' # 索引从0开始 [索引(下标,index)] print(s1[0]) print(s1[3]) print(s1[5]) print(s1[6]) print(s1[-1])
输出:
p
h
n
全
期
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。
s1 = 'python全栈8期' print(s1[0:6]) print(s1[6:10]) print(s1[6:11]) print(s1[6:]) print(s1[1:5]) print(s1[0:5:2]) print(s1[0:7:3])
输出:
python
全栈8期
全栈8期
全栈8期
ytho
pto
ph全
#倒取值:加步长
s1 = 'python全栈8期' print(s1[3::-1]) print(s1[5:0:-2]) print(s1) #不变 s2 = s1[0:6] print(s2)
输出:
htyp
nhy
python全栈8期
python
4.1字符串的常用方法:
ret = 'alexS' #字符串的使用方法。 # * capitalize 首字母大写,其他的全小写 ret.capitalize() print(ret) ret1 = ret.capitalize() print(ret1)
输出:
alexS
Alexs
大小写反转:
ret = "alexS" # * upper,lower 字母全部大写或者小写 ret2 = ret.upper() ret3 = ret.lower() # print(ret2,ret3)
输出:
ALEXS alexs
应用:
code = 'A' your_code = input('请输入验证码,不区分大小写') if your_code == 'A' or your_code == 'a': print('您输入的正确') else:print('请重新输入') code = 'adeE'.upper() your_code = input('请输入验证码,不区分大小写').upper() if your_code == code: print('您输入的正确') else:print('请重新输入')
大小写翻转:
ret = "alexS" ret4 = ret.swapcase() print(ret4)
输出:
ALEXs
以特殊符号或者空格隔开,每一个字符串首字母大写 title()
msg='egon say hi' print(msg.title()) #每个单词的首字母大写
输出:
Egon Say Hi
# * 居中,总长度,空白处填充.center()
a1 = "老男孩" ret2 = a1.center(20,"*") print(ret2) ret = 'alexS' print(ret.center(20)) print(ret.center(20,'*')) # *******alexS********
输出:
********老男孩*********
alexS
*******alexS********
#startswith 判断是否以...开头
#endswith 判断是否以...结尾
# * 返回bool值 startswith endswith
ret5 = ret.startswith('a') ret5 = ret.startswith('ale') ret5 = ret.startswith('alexS') ret5 = ret.startswith('l',1,3) # 切片 print(ret5)
#数字符串中的元素出现的个数。
# ** count
ret22 = 'alexS,aeaeQ' ret7 = ret22.count('a') ret7 = ret22.count('ale') # 整体与个体 ret7 = ret22.count('W') # 0 ret7 = ret22.count('a',0,7) # 切片的count print(ret7)
# 前面的补全
# 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,
#如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
a2 = "qwaaaaaaaa aa" ret8 = a2.expandtabs() print(ret8,len(ret8))
输出:
qwaaaaaaaa aa 18
* find 通过元素找到索引(找到第一个元素),找不到返回-1
ret = 'aleaxS' ret9 = ret.find('a') # ret9 = ret.find('W',0,5) #可以切片 print(ret9)
#寻找字符串中的元素是否存在
# ret6 = a4.find("fjdk",1,6)
# print(ret6) # 返回的找到的元素的索引,如果找不到返回-1
# ret61 = a4.index("fjdk",4,6)
# print(ret61) # 返回的找到的元素的索引,找不到报错。
#index 和find用法一模一样,找不到元素,就会报错
ret = 'aleaxS' ret10 = ret.index('w') print(ret10)
# * strip 去除字符串前后的空格及你想去除的元素
ret11 = ' alex '.strip() print(ret11)
应用:
name = 'alex' username = input('请输入你的用户名:').strip() if username == name : print('登录成功')
# ret11 = ' alex '.lstrip() # print(ret11) # ret11 = ' alex '.rstrip() # print(ret11) #一: # ret12 = 'asldfkjafa'.strip('a') # print(ret12) #二: # ret13 = 'asldfkjafa'.strip('sa') # print(ret13) # ret13 = 'asldfkjafa'.strip('salf') # print(ret13) # ret14 = 'asldfkajafa'.strip('saWlf') # print(ret14)
#split * 将字符串分割成列表
ret15 = 'jinxin alex wusir' ret16 = ret15.split() print(ret16)
输出:
['jinxin', 'alex', 'wusir']
ret15 = 'jinxin,alex,wusir' ret16 = ret15.split(',') print(ret16)
输出:
['jinxin', 'alex', 'wusir']
ret15 = 'title tle tlie' ret16 = ret15.split('t') print(ret16)
输出:
['', 'i', 'le ', 'le ', 'lie']
# * 替换 replace
ret18 = '粉红色打开了粉红色级第三粉红色' ret19 = ret18.replace('粉红色','嫩绿色',1) print(ret19)
输出:
嫩绿色打开了粉红色级第三粉红色
五、其他用法
5.1格式化输出
#第一种: # ret20 = 'name:{},sex:{},身高:{}'.format('alex','ladyboy',178) # print(ret20) #第二种: # ret20 = 'name:{0},sex:{1},身高:{2},name:{0}'.format('alex','ladyboy',178) # print(ret20) #第三种:键值对 # ret20 = 'name:{name},sex:{sex},身高:{high},name:{name}' # .format(sex = 'ladyboy',high = 178,name='alex') # print(ret20)
#res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
5.2判断条件
# 判断条件 # name='123' # print(name.isalnum()) #字符串由字母或数字组成 # print(name.isalpha()) #字符串只由字母组成 # print(name.isdigit()) #字符串只由数字组成
应用:(查字符串中有几个数字)
s = 'fs4dkjla123fkj2dsa' count = 0 for i in s: if i.isdigit(): count += 1 else:print(666) print(count)
5.3字符串不能被改变,只能重新赋值
s = 'aelsdskjl' s = s[1:] print(s)
5.4测量长度
print(len(s)) #测量长度
应用:(字符串从头到尾依次输出)
s = 'aelsdskjl'
index = 0
while True:
print(s[index])
index += 1
if index == len(s):break
#for 变量 in 可迭代对象 s = 'fs4dkjla123fkj2dsa' for i in s: print(i)
join:
字符串使用join,还是字符串
s = 'alex' s1 = "_".join(s) print(s1) 输出: a_l_e_x
列表使用join,变成字符串
li = ['alex','wusir','rain'] s1 = "*".join(li) print(s1) 输出: alex*wusir*rain
字符串变列表:
s = 'alexwusir' li = [s[0:4],s[4:]] print(li) 输出: ['alex', 'wusir']