2.基本数据类型简介-int-str-bool
基本数据类型简介
int 整数
bit_length():二进制的长度
a=10 //1010 #10的二进制形式 print(a.bit_length()) #测得是二进制的长度
str 字符串
字符串是不可变的对象,所以任何的操作对原字符串是没有任何影响的,操作会返回新的字符串
索引语法:字符串[索引];
s="zhao,qian,sun,li,zhou,wu,zheng,wang" print(s[0])#索引正向:从零开始 print(s[-1])#反向:从-1开始
切片语法:str[start:end:step]
s="zhao,qian,sun,li,zhou,wu,zheng,wang" print(s[0:10])#结果为:zhao,qian, 顾头不顾尾 取不到索引为10的那个字符 print(s[-8:-1])#结果为:eng,wan 索引为-1的是取不到的 print(s[2:100])#结果为:ao,qian,sun,li,zhou,wu,zheng,wang 给两个参数,默认向右切,第二个参数如果超出索引的范围,切到最后 print(s[:5])#结果为:zhao, 从头开始切 切到最后同理 print(s[:])#结果为:zhao,qian,sun,li,zhou,wu,zheng,wang 切出全部 #跳着切 print(s[2:9:3])#结果为:aqn 第三个参数代表步数,几步为一组,切出每组第一个,就是结果 print(s[-9:-1:2])#结果为:hn,a print(s[9:2:-1])#结果为:,naiq,o 反着切
字符串常用的操作
较为重要的count()、find()、index()的操作
#count 数数 s="zhao*qian*sun*li,zhou,wu,zheng,wang" print(s.count("o")) #统计字母o在字符串出现的次数 print(s.count("j")) #没出现则返回0 # find 查找 可有切片的结合 s="zhao*qian*sun*li,zhou,wu,zheng,wang" print(s.find("o")) #返回的是索引 找不到则返回-1 #index 求索引 也可有切片 s="zhao*qian*sun*li,zhou,wu,zheng,wang" print(s.index("o",6,20)) #返回的是索引 找不到则会报错
字母的大小写
s="xiao ming tai shuai le" s1=s.capitalize() #首字母大写 print(s) #字符串是不可变对象 print(s1) s2=s.title()#标题,就是每个单词首字母大写 print(s2) s3=s.upper()#转换成大写字母 print(s3) s4=s3.lower()#转换成小写字母 print(s4) l="Xiao Ming" l1=l.swapcase()#字母大小写转换 print(l1)
strip(str) :剔除特定的字符操作
j=" qu kong ge " j1=j.strip() #是去掉左右两边的空格 可用在登录功能方面 print(j) print(j1) j2=j.lstrip() #去掉的是左边的空格 j3=j.rstrip() #去掉的是右边的空格 print(j2) print(j3) s="小明真帅,臭美" print(s.strip("臭美"))#去掉特定的字符
replace():替换字符
s="zhao,qian,sun,li,zhou,wu" print(s.replace(",","之后是"))#结果为zhao之后是qian之后是sun之后是li之后是zhou之后是wu
split():切割字符串(想想锯木头的现实情况)
# #切割 想想锯木头的现实情况 s="zhao*qian*sun*li,zhou,wu,zheng,wang" l=s.split("*") #列表来接收切割之后的每一项 print(l)#['zhao', 'qian', 'sun', 'li,zhou,wu,zheng,wang'] l1=s.split("zhao*qian*sun*li,zhou,wu,zheng,wang")#全部切割 print(l1) #得到两个空字符串:['', ''] l2=s.split("你")#不存在,则返回的是原字符串的内容 print(l2)#['zhao*qian*sun*li,zhou,wu,zheng,wang'] l3=s.split("zhao*qian*sun*li,zhou,wu,zheng,wang1111")#超出的情况 print(l3)#['zhao*qian*sun*li,zhou,wu,zheng,wang'] l5=s.split("o",1)#还有第二个参数的设置,作用是切数割的次,说成分割更恰当些 print(l5)#['zha', '*qian*sun*li,zhou,wu,zheng,wang'] #在开头和结尾出现你的刀,一定会出现空的字符串 #空字符串不能做参数
{}版的格式化输出
print("{}帅,{}信不,不信给你{}".format("小明","我",200)) print("{1}帅,{0}信不,不信给你{2}".format("小明","我",200)) #这个不要求数据类型,通吃
startswith()、endswith()
s="zhao*qian*sun*li,zhou,wu,zheng,wang" print(s.startswith("zhao"))#T 判断开头是否为*** print(s.endswith("wan"))#F 判断结尾是否为***
isalnum()、isalpha()
s="zhaoqiansunlizhouwu21343zhengwang" print(s.isalnum())#T 判断字符串为数字和字母组合而成 print(s.isalpha())#F 判断字符串为字母组合而成
python的内置函数
len():计算字符串的长度
迭代:我们可以使用for循环来便利(获取)字符串中的每一个字符
该语法:for 变量 in 可迭代对象:#可迭代对象:可以一个一个往外取值的对象
pass
#迭代与len() s="你好帅" print(len(s))#3 for k in s: print(k)
bool 布尔值
数字变成bool:如果数字是零,那么bool值为False 如果是非零的,那么bool值为True
True与1的效率问题:1的效率高
字符串转换成bool类型:空字符串是False,非空字符串都是True
a=None #真空 什么都没有 它的bool值是False
总的来说涉及到空的(各种数据类型)bool值都是False,非空:True