一、数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示

 数据类型

  数字

  字符串

  列表

  元组

  字典

  集合

二基础数据类型

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)

#\t前面的补全

# 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,
#如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。

a2 = "qwaaaaaaaa\taa"
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']