基本数据类型及内置方法(整型和字符串)

基本数据类型及内置方法

一.数字类型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 hello'  # 表示制表符(tab键)
>>> name
tony    hello
>>> name.expandtabs(1)  # 修改 制表符代表的空格数
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.isdecimal()
True
>>> num3.isdecimal()
False
>>> num4.isdecimal()
False

#isnumberic:unicode,中文数字,罗马数字(bytes类型无isnumberic方法)
>>> num2.isnumeric()
True
>>> num3.isnumeric()
True
>>> num4.isnumeric()
True

# 三者不能判断浮点数
>>> num5 = '4.3'
>>> num5.isdigit()
False
>>> num5.isdecimal()
False
>>> num5.isnumeric()
False

'''
总结:
  最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
  如果要判断中文数字或罗马数字,则需要用到isnumeric。
'''

# 6.is其他
>>> name = 'tony123'
>>> name.isalnum() #字符串中既可以包含数字也可以包含字母
True
>>> name.isalpha() #字符串中只包含字母
False
>>> name.isidentifier()
True
>>> name.islower()  # 字符串是否是纯小写
True
>>> name.isupper()  # 字符串是否是纯大写
False
>>> name.isspace()  # 字符串是否全是空格
False
>>> name.istitle()  # 字符串中的单词首字母是否都是大写
False

 

原文地址:https://www.cnblogs.com/a736659557/p/11801195.html