基本数据类型及内置方法(整型和字符串)
一.数字类型int(整型)与float(浮点型)
有序/无序:有索引的类型都是有序的
可变/不可变:值变id变为不可变类型;值变id不变为可变类型
整型
用途:用来存如年龄 证件号等整数值
定义方法
age = 18
#本质为
age = int(18)
常用方法之进制转化
#二进制转十进制
print(int('110', 2))
6
#八进制转十进制
print(int('123', 8))
83
#十六进制转十进制
print(int('123', 16))
291
#十进制转二进制
print(bin(123))
0b1111011 #0b为二进制的标识
#十进制转八进制
print(oct(123))
0o173 #0b为八进制的标识
#十进制转十六进制
print(hex(123))
0x7b #0b为十六进制的标识
浮点型
用途:用来存如身高 体重等小数值
定义方法
a = 2.1
#本质为
a = float(2.1)
a = '2.1'
b = float(a)
print(type(b))
c = int(b)
print(type(c))
#输出结果
<class 'float'>
<class 'int'>
#注意在浮点型的字符串转化为整型时必须要先转化为浮点型
总结:整型和浮点型都只能存一个值,是无序的不可变的类型。
常用与算术运算和比较运算
a = 1
print(id(a))
a = 2
print(id(a))
#输出结果
140725937795344
140725937795376
字符串(str)
用途:用于存储一些描述性信息
定义方式:单引号/双引号/三个单引号/三个双引号
以上方式没有任何区别,但是不能混用
r:转义,在字符串前加小写r,将字符串恢复为原本的形式
字符串嵌套时不能使用同种引号
personal_information = 'bing is 'a' boy'#错误示范
print(personal_information)
#输出结果为
personal_information = 'bing is 'a' boy'
^
SyntaxError: invalid syntax
personal_information = 'bing is "a" boy'
print(personal_information)
#输出结果为
bing is "a" boy
personal_information = 'bing is "a" boy'
#本质为
personal_information = str('bing is "a" boy')
常用方法
重点
1 索引取值
pi = 'bing is a boy'
#从该字符串中取出'a'
print(pi[8])
print(pi[-5])
#输出结果为
a
a
#字符串取值可以正向取 反向取,但只能取不能存
2 索引切片(截取字符串中的一小段字符)
pi = 'bing is a boy'
#从该字符串中取出'is'
print(pi[4:7])
#从该字符串中取出'boy'
print(pi[10:])
print(pi[-3:])
#从该字符串中取出'bing'
print(pi[:4])
#将该字符串取反
print(pi[::-1])
#输出结果为
is
boy
boy
bing
yob a si gnib
3 成员运算(in和not in)
pi = 'bing is a boy'
#判断'is'是否在该字符串中
print('is' in pi) #in表示存在,如果正确则返回True错误则返回False
print('is' not in pi) #not in表示不存在,如果正确则返回True错误则返回False
#输出结果为
True
False
4 strip():移除字符串首尾指定的字符(默认移除空格)
#不指定字符默认移除空格
pi = ' bing is a boy'
pi1 = pi.strip()
print(pi1)
#输出结果为
bing is a boy
#strip()移除指定的字符
pi = '*********bing is a boy****'
pi1 = pi.strip('*')
print(pi1)
#输出结果为
bing is a boy
5 split(切分):对字符串进行切分,可以指定切分分割符,返回是一个列表
#不指定分割符,默认以空格切分
pi = 'bing is a boy'
print(pi.split())
#输出结果为
['bing', 'is', 'a', 'boy']
#指定分割符
pi = 'bing|is|a|boy'
print(pi.split('|'))
#输出结果为
['bing', 'is', 'a', 'boy']
6 len():获取当前数据中元素的个数
pi = 'bing is a boy'
print(len(pi))
#输出结果为
13
需要掌握
1 strip, lstrip, rstrip
lstrip:去除字符串左边的*号
rstrip:去除字符串右边的*号
pi = '***bing is a boy***'
print(pi.strip('*'))
print(pi.lstrip('*'))
print(pi.rstrip('*'))
#输出的结果为
bing is a boy
bing is a boy***
***bing is a boy
2 lower():将英文字符串全部变小写
upper():将英文字符串全部变大写
pi = 'bing is A Boy'
print(pi.upper())
print(pi.lower())
#输出结果为
BING IS A BOY
bing is a boy
3 startswith():判断字符串是否以括号内指定的字符开头,结果为布尔值
endswith():判断字符串是否以括号内指定的字符结尾,结果为布尔值
pi = 'bing is a boy'
print(pi.startswith('b'))
print(pi.endswith('b'))
True
False
4 .格式化输出之format()
name = 'bing'
age = '21'
#类似与占位符%s固定位置的传值
print('你的名字是:{}, 你的年龄是:{}'.format(name, age))
#不依赖位置的传值
print('你的名字是:{name}, 你的年龄是:{age}'.format(age=age, name=name))
#利用索引传值
print('你的名字是:{1}, 你的年龄是:{0}'.format(age, name))
#输出的结果为
你的名字是:bing, 你的年龄是:21
你的名字是:bing, 你的年龄是:21
你的名字是:bing, 你的年龄是:21
5 split():按照从左到右的顺序对字符串进行切分,可以指定切割次数
rsplit():与split的相反,从左往右切割,可以指定切割次数
pi = 'bing*is*a*boy'
print(pi.split('*', 2))#从左往右切割,切割2次
print(pi.rsplit('*', 1))#从有往左切割,切割1次
6 jion():从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
pi = 'bing is a boy'
print('*'.join(pi))
#输出结果为
b*i*n*g* *i*s* *a* *b*o*y
7 replace():将字符串中的元素进行替换,参数:先老值 后新值
pi = 'bing is a boy'
print(pi.replace('bing', 'tom'))
#指定替换的个数
print(pi.replace('b', 'a', 1))
#输出结果为
tom is a boy
aing is a boy
8 isdight():判断当前字符串中的数据是否是一个数字,返回结果为布尔值
a = '123456'
print(a.isdigit())
b = '112c221'
print(b.isdigit())
#输出结果为
True
False
了解操作
# 1.find,rfind,index,rindex,count
# 1.1 find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1
>>> msg='tony say hello'
>>> msg.find('o',1,3) # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引
1
# 1.2 index:同find,但在找不到时会报错
>>> msg.index('e',2,4) # 报错ValueError
# 1.3 rfind与rindex:略
# 1.4 count:统计字符串在大字符串中出现的次数
>>> msg = "hello everyone"
>>> msg.count('e') # 统计字符串e出现的次数
4
>>> msg.count('e',1,6) # 字符串e在索引1~5范围内出现的次数
1
# 2.center,ljust,rjust,zfill
>>> name='tony'
>>> name.center(30,'-') # 总宽度为30,字符串居中显示,不够用-填充
-------------tony-------------
>>> name.ljust(30,'*') # 总宽度为30,字符串左对齐显示,不够用*填充
tony**************************
>>> name.rjust(30,'*') # 总宽度为30,字符串右对齐显示,不够用*填充
**************************tony
>>> name.zfill(50) # 总宽度为50,字符串右对齐显示,不够用0填充
0000000000000000000000000000000000000000000000tony
# 3.expandtabs
>>> name = 'tony\thello' # \t表示制表符(tab键)
>>> name
tony hello
>>> name.expandtabs(1) # 修改\t制表符代表的空格数
tony hello
# 4.captalize,swapcase,title
# 4.1 captalize:首字母大写
>>> message = 'hello everyone nice to meet you!'
>>> message.capitalize()
Hello everyone nice to meet you!
# 4.2 swapcase:大小写翻转
>>> message1 = 'Hi girl, I want make friends with you!'
>>> message1.swapcase()
hI GIRL, i WANT MAKE FRIENDS WITH YOU!
#4.3 title:每个单词的首字母大写
>>> msg = 'dear my friend i miss you very much'
>>> msg.title()
Dear My Friend I Miss You Very Much
# 5.is数字系列
#在python3中
num1 = b'4' #bytes
num2 = u'4' #unicode,python3中无需加u就是unicode
num3 = '四' #中文数字
num4 = 'Ⅳ' #罗马数字
#isdigt:bytes,unicode
>>> num1.isdigit()
True
>>> num2.isdigit()
True
>>> num3.isdigit()
False
>>> num4.isdigit()
False
#isdecimal:uncicode(bytes类型无isdecimal方法)
>>> num2.