数据类型
int数字类型:
bit_length():
计算数字二进制位数
i = 2
print(i.bit_length()) 值为2 二进制00000010
i= 5
print(i.bit_length()) 值为3 二进制00000101
bool布尔值:
int ----->bool
只要是0 ----》False 非0就是True
i = 3b=bool(i)print(b)
bool----> int
True 1False 0
i=int(True)print(i) 值为1
ps:
while True:
pass
while 1: 效率高
pass
str --->bool
s = "" ----->False
非空字符串都是True
s= "0" -----> True
s
if s:
print('你输入的为空,请重新输入')
else:
pass
字符串
索引与切片
对字符串的任何操作都会形成一个新的字符串,跟以前的没关系
s = 'ABCDLSESRF'
#索引
s1 =s[0]print(s1)
A
s2= s[2]print(s2)
C
s3= s[-1]print(s3)
F
s4= s[-2]print(s4)
R
切片 :
顾头不顾尾,尾需要加1
s = 'ABCDLSESRF's5= s[0:4]print(s5)
#ABCD
s6= s[0:-1]print(s6)
#ABCDLSESR
s7= s[:] #s7和s8效果一样,取完后边什么都不写
s8 =s[0:]print(s7,s8)
#ABCDLSESRF ABCDLSESRF
s9=s[0:0]
#空
步长:
s = 'ABCDLSESRF' #s[首:尾:步长]
s10 = s[0:5:2] #隔两个取一次
print(s10)
#ACL
s11= s[4:0:-1]print(s11)
#LDCB
s12= s[3::-1]print(s12)
#DCBA
s13= s[3::-2]print(s13)
#DB
倒着取
s = 'ABCDLSESRF's13= s[-5:-1] #表示从-5到-1的截取显示print(s13)
#SESR
s14= s[-1::-1] #表示以-1开头,一直到开始结束,每次以-1的形式显示print(s14)
#FRSESLDCBA
s15= s[::-1] #表示全部截取,以-1的形式显示,每次显示-1个print(s15)
#FRSESLDCBA
字符串的操作
大小写系列
大小写对数字没有影响
capuitalize()
# 字符串第一个字母大写
s = 'arthur's1=s.capitalize()print(s1)
#Arthur
title()
#每个隔开(非字母)的单词首字母大写
s = 'my +na7me,is*authur'
print(s.title())
#My +Na7Me,Is*Authur
upper()
全大写
s = 'my name is Authur 7 周日'
print(s.upper())
#MY NAME IS AUTHUR 7 周日 #字母和中文是不受影响的
lower()
全小写
s = 'MY NAME IS AUTHUR 7 周日'
print(s.lower())
#my nameis authur 7 周日
使用例子
输入验证码时,不分大小写
s_str= 'acEQ1'you_input=input('请输入验证码,不区分大小写:')if s_str.upper() ==you_input.upper():print('输入成功')else:print('请重新输入')
swapcase()
大小写翻转
s = 'mY nAme iS aUTHUR'
print(s.swapcase())
#My NaME Is Authur
填充
center()
居中,默认填充空格,可指定填充符号
s = 'Authur'
print(s.center(20,'+')) #~号是填充位,不填默认是空格,20位左右表示左右加起来填充20位
#+++++++Authur+++++++
expandtabs()
加\t,如果字符串中有\t,字符串前的字符不足八位,补齐八位,如果前面的字符串满足八位,再补八位
s = 'authur\tsir'
print(s.expandtabs()) #结果为authur sir #所以意味着\t补了三位
s = 'authuris\tsir'
print(s.expandtabs()) #结果为authuris sir #所以意味着\t补了八位,因为前面的字符串已经满足八位
查找判断类
len()
测试字符串的长度,公共方法,字符串可以用,列表和元祖也可以用
s = 'authur'
print(len(s))#6
startswith()
以什么开头,可切片
s = 'authur'
print(s.startswith('aut',0,5)) #默认开始和结尾不写是判断全部
#True
endswith()
以什么结尾,可切片
s = 'Authur'
print(s.endswith('t',0,3)) #默认什么都不写是判断全部,判断选定范围内的尾部是否为指定字符串结尾
#True
find()
通过元素找索引,找不到返回-1,区分大小写,找单词时按照第一个单词的索引位置返回数字,可切片,默认全部查找
s = 'authur'
print(s.find('t',0,4))
#2
index()
通过元素找索引,和find使用方法相同,但是找不到报错
删除指定符号
strip
默认删除前后空格,可以添加填充符,例如特殊符号或字母等,也可以添加多个
s = '* 7authur #'
print(s.strip('* 7#'))
#authur
使用例子
username = input('请输入名字:').strip().lower()if username =='authur':
info='''****************************
**welcome {}'s cnblogs**
****************************'''.format('authur')print(info)
rstrip
默认删除右边空格,使用方法和strip一样
lstrip
默认删除左边空格,使用方法和strip一样
count()
统计指定字符的出现次数,可以切片
s = 'authur'
print(s.count('u',0,3))
#1
转换
split()
字符串转换为列表
将字符串按照规定拆分为列表,默认不输入内容为空格,选定以什么字符或者符号分割,则选定的会消失
s = 'Arthur:this:my:name'l= s.split(':')print(l)
#['Arthur', 'this', 'my', 'name']
格式化输出
format()
format的三种玩法 格式化输出
s= '我叫{},今年{},爱好{},再说一下我叫{}'.format('authur',18,'python','authur')print(s)
name= input('请输入名字:')
s= '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,18,'python')print(s)
name= input('请输入名字:')
s= '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=18,name=name,hobby='python')print(s)
替换
replace()
s = 'my name is xiyangyang and xiyangyang'
print(s.replace('xiyangyang','authur',1))
#my name is authur and xiyangyang
is系列
返回值为True和False
#字符串由字母或数字组成
print(name.isalnum())#字符串只由字母组成
print(name.isalpha())#字符串只由数字组成
print(name.isdigit())