Python学习Day03
1.基本数据类型
- 整形 int
- 字符串 str
- 布尔型 bool
- 列表 list [12,True,'hello',[1,2,3]] 存储大量数据
- 元组 tuple (12,True,'hello',[1,2,3])存储大量数据,内容不可变
- 字典 dict {'name':'bin'} 存储大量关联型的数据,查询速度非常快
2.查看数据类型的源码
以int类型为例:
四个主要函数
以bit_length()函数为例:
i = 4
print(i.bit_length())
输出: 43 输出的是有效的二进制位数
3.字符串的索引与切片
1.按照索引取值
s = '要加油啊asd'
#从左至右有下标,即索引
s2 = s[4]
print(s2,type(s2))
输出结果:s <class 'str'>
对字符串进行索引,切片出来的数据类型都是 字符串类型
然后开始整活:
上面的例子中,我要获取到字符串最后一个字符,数字符串下标?我不,来个花的:
print(s[-1])
print(s[-2])
2.按照切片取值
注:顾头不顾尾
#按切片取值
#顾头不顾尾
s = '要加油啊asd'
s1 = s[0:3] #从0开始,这个0可以省略
print(s1) #要加油
s2 = s[4:-1]
print(s2) #as
#想取出:asd
#s[4:-1],由于这玩意顾头不顾尾,所以只取出:郑佳
# 所以可以给-1+1, 又因为s[4:0]与前面冲突
所以省去后面的下标
s3 = s[4:] #0省略,不省略出错
print(s3) #asd
3.切片步长:
#切片步长
#获取:要油a,即从第一个开始,到第4个结束,步长为2
s4 = s[:5:2] #0省略,5是结束位置,1是步长
print(s4)
4.倒序获取:要加反向步长
#倒序,加上反向步长
s5 = s[-1:3:-1]
print(s5)
s6 = s[-1:-4:-1]
print(s6)
5.全部切片取出和倒序取出:
#全部切片取出:
s7 = s[:] #头和尾的位置都省略
print(s7)
#全部倒序取出
s8 = s[-1:0:-1] #dsa啊油加
print(s8)
s9 = s[-1::-1] #dsa啊油加要
print(s9)
4.字符串的常用操作
0.测定字符串长度
#测定字符串长度
s = 'asdfqwer'
print(len(s))
1.大小写
s = 'JaiBin啊'
#变大写
s1 = s.upper() #JAIBIN啊
print(s1)
#变小写
s2 = s.lower() #jiabin啊
print(s2)
应用:不区分大小写的输入
username = input('输入你用户名')
password = input('输入你密码')
code = 'QwEr'
your_code = input('输入验证码,不区分大小写')
if your_code.upper() == code.upper(): #要实现不区分大小写,将两者都转为大写或小写比较即可
if username == 'bin' and password == '123':
print('登录成功!')
else:
print('用户名或密码错误!')
else:
print('验证码错误!')
2.startwith() , endwith()
返回值为布尔类型
s = 'zhengjiabin'
print(s.startswith('z')) #Ture
print(s.startswith('zhengjiabin')) #Ture
#了解一下
print(s.startswith('j',5,7)) #5到7位置是否由j开始
print(s.endswith('bin')) #Ture
3.replace()
#replace()
s = 'hhh好厉害,hhh也太强了吧,最气人的是hhh还很帅'
s1 = s.replace('hhh','as') #默认全部替换
print(s1) #as好厉害,as也太强了吧,最气人的是as还很帅
s2 = s.replace('hhh','asd',2)
print(s2) #asd好厉害,asd也太强了吧,最气人的是hhh还很帅
#很尴尬的是,不能直接做到替换1 3 位置的而不替换2位置的
4.strip():去除字符串左右的空格,\t,\n
#strip(): 去除字符串左右的空格: ,tab键:\t, 换行:\n
s = ' \na s\t\n'
#print(s)
print(s.strip()) #a s
#了解内容
s2 = 'qwerjiaaabinasdf'
s3 = s2.strip('asfdrewq')
#可以去掉左右两端的所含的这些字母 这些字母的顺序不必与原字符串相同
#但是仍不能去掉中间的
print(s3) #jiaaabin
5.split()----***肥肠中药
默认按照空格分隔,返回一个列表-----str---->list
#split():默认按照空格分隔,返回一个列表
s = 'as 好 厉害'
s1 = s.split()
print(s1) #['as', '好', '厉害']
指定分隔符:
#指定分隔符
s2 = 'as:好:厉害'
s3 = s2.split(':') #使用的分隔符做参数
print(s3) #['as', '好', '厉害']
#了解内容
s4 = ':aaa:sss:ddd:ff'
s5 = s4.split(':')
print(s5) #['', 'aaa', 'sss', 'ddd', 'ff']
6.join()----**
#join
s = 'jiabin'
s2 = '+'.join(s)
print(s2) #j+i+a+b+i+n
s3 = '-'.join(s)
print(s3) #j-i-a-b-i-n
应用:将列表转换为字符串
前提:列表里的元素必须都是str类型
#可以把列表转换成字符串
l = ['as','真的','好厉害']
s4 = ':'.join(l)
print(s4,type(s4)) #as:真的:好厉害 <class 'str'>
s5 = ''.join(l)
print(s5,type(s5)) #as真的好厉害 <class 'str'>
7.count()
计算字符串中某个字符出现的次数
#count
#计算字符串中某个字符出现的次数
s = 'asdadadsaasdfa'
print(s.count('a'))
8.format:格式化输出
第一种用法:
#format:格式化输出
msg = '我叫{}今年{}性别{}'.format('bin','18','男')
print(msg) #我叫bin今年18性别男
第二 种用法:常用
#第二种用法
msg = '我叫{0}今年{1}性别{2}我就叫{0}'.format('bin','18','男')
#数字相当于后面元素的索引
print(msg) #我叫bin今年18性别男我就叫bin
第三种用法:
#第三种用法:
a = 18
msg = '我叫{name}今年{age}性别{sex}'.format(sex='男',age=a,name='bin')
#数字相当于后面元素的索引
print(msg) #我叫bin今年18性别男
9.is系列
返回值为布尔类型
name = '123bin'
print(name.isalpha()) #字符串是否由字母组成
print(name.isalnum()) #字符串是否由字母或数字组成
print(name.isdecimal()) #字符串是否只由十进制组成
10.in 与 not in
s = '老男孩edu'
print('老' in s) #True
print('老男' in s) #True
print('老孩' in s) #False
print('老孩' not in s) #True
只能判断相邻字符是否存在字符串中
5.for循环
s = 'asdfqwer'
for i in s:
print(i)
for else,while else 用法一样