数据类型的内置方法
今日内容
- 内置方法的简介
- 整型与浮点型的内置方法
- 字符串的内置方法
- 列表的内置方法
- 作业
内置方法的简介
内置方法可以看成是一个数据类型的一些自带功能(每个数据类型的内置方法都有区别)
内置方法如何查看呢?
只要把一个数据类型的关键字输上然后在后面加上英文输入法下的点好即可
eg: 数据类型 . 方法名()
'tony'.方法名
name = 'tony'
name.方法名()
使用数据类型的内置方法统一称之为句点符
整型与浮点型的相关操作
1.整型(int)
整型就是数字,主要用于计算,没有内置方法
1.1整型的类型转换
- 语法: int(待转换的数据类型)
int('123') # 这是可以转换成整型的
int('11.22') # 这不能转换成整型
int('11a22') # 这不能转换成整型
int('[1,2,3]') # 这不能转换成整型
'''字符串内必须是纯数字的才可以转换 有字母或小数的都不行'''
int(True) # 1 整型会把布尔值自动装换成1或0
int(False) # 0
- 还有进制转换
'''二进制 八进制 十进制 十六进制'''
'''十进制转换为其它进制'''
print(bin(10)) # bin() 将十进制转换为二进制 0b1010 0b是二进制的标识
print(oct(10)) # oct() 将十进制转换为八进制 0o12 0o是八进制的标识
print(hex(10)) # hex() 将十进制转换为十六进制 0xa 0x是十六进制的标识
'''将其他进制转换为十进制'''
'''int可以自动识别进制数然后转换为十进制数'''
print(int(0b1010)) # 10
print(int(0o12)) # 10
print(int(0xa)) # 10
'''还可以人为指定的进制数'''
print(int('0b1010', 2)) # 10
print(int('0o12', 8)) # 10
print(int('0xa', 16)) # 10
2.浮点型(float)
浮点型就是小数,也没有内置方法
2.1浮点型的类型转换
- 语法:float(待转换的数据类型)
print(float('1123')) # 1123.0 整数是可以转换成小数型 python会自动帮你加一个 .0 print(float('11.32')) # 11.32 小数点也是可以转换的 但是只能识别一个小数点 print(float('11.22.33.22.5.6) # python只能识别一个小数点 print(float('11a32') # 报错 不能转换字母 print(float('[1,2,3]') # 报错 不能转换列表 ''' 列表、字典、元祖、集合都不能转换 ''' print(float(True) # 1.0 浮点型会把布尔值自动转换成1或0 print(float(False) # 0.0
字符串的内置方法
字符串有许多内置方法,关键字:str
1. 字符串的类型转换
''' 字符串可以转换任何数据类型 '''
print(str(3456)) # 3456
print(str(11.32)) # 11.32
print(str([11, 22, 33])) # [11, 22, 33]
print(str({'name': 'tony', 'age': 18})) # {'name': 'tony', 'age': 18}
print(str(True)) # True
print(str((11, 22, 33))) # (11, 22, 33)
print(str({1, 2, 3, 4})) # {1, 2, 3, 4}
''' 都不会报错 都可以转成字符串 '''
2. 索引取值
s = 'hello python'
print(s[0]) # h
print(s[4]) # o
print(s[-1]) # n
print(s[-2]) # o
''' 可以正向取值 也可以反向取值 反向取值是按1开始算的 '''
3.切片取值
s = 'hello python!'
print(s[0:3]) # hel 从索引0的位置开始切到索引2的位置 顾头不顾尾
print(s[-1:-4]) # 切片的顺序默认从左往右
# 当你第一个数字是-1时那么它就会从最后一个数字开始往右边开始打印你的第二数字
print(s[-1:-4:-1]) # !no 可以通过第三个参数的正负一 控制方向
print(s[-4:-1]) # hon 顾头不顾尾 第三个数字如果不写的话 默认为1
4.间隔
s = 'hello python!'
print(s[:]) # hello python! 取出所有
print(s[::2]) # hlopto! 针对整个字符串 隔一个取一个
print(s[0:5:1]) # hello 从索引0到索引5按一个一个取出(顾头不顾尾)
print(s[0:8:2]) # hlo 从索引0到索引8隔一个取去一个(顾头不顾尾)
5.len()方法
'''len()是可以统计字符串的中'''
s = 'hello python!'
print(len(s)) # 13 空格也算是字符
'''也可以直接在print中输出字符串'''
print(len('hello python!')) # 13
6.strip()方法
'''strip()方法可以消除字符串开头和结尾指定的字符'''
name = ' tony '
res = name.strip()
print(name) # tony 字符串调用内置方法 不是改变原来的值 是产生一个新的值 所以会打印原来的值
print(res) # tony 如果括号内不指定字符那么就会默认消除首尾的空格
name = '**tony**'
print(name.strip('*')) # tony 如果指定了字符 那么strip会消除字符串开头和首尾指定的字符
print(name.rstrip('*')) # **tony rstrip是消除右边指定的字符 right
print(name.lstrip('*')) # tony** lstrip是消除左边指定的字符 left
'''字符串调用内置方法 不是改变原来的值 而是产生一个新的值'''
7.split()方法
'''split是按照指定的字符切割字符串''' s = 'tony|123|male' '当字符串出现多个一样的字符时可以使用split方法切割字符串' print(s.split('|')) # ['tony', '123', 'male'] 切割之后的结果是一个列表 '''还可以按照列表的解压赋值来赋值给变量名''' name, age, gender = s.split('|') # 可以看成是 name, age, gender = ['tony', '123', 'male'] print(name, age, gender) # tony 123 male print(s.split('|', maxsplit=1)) # 还可以指定切几次 这是从左往右切一次 ['tony', '123|male'] print(s.rsplit('|', maxsplit=1)) # 还可以从右往左切 这是从有往左切一次 ['tony|123', 'male']
8.lower和upper语法
'''
lower是把字符串所有的字母变成小写
upper是把字符串所有的字母变成大写
islower是判断字符串中所有的字母是否为小写
isupper是判断字符串中所有的字母是否为大写
'''
s = 'HeLlo PyThOn PYThon 是最牛的 666'
print(s.upper()) # HELLO PYTHON PYTHON 是最牛的 666
print(s.lower()) # hello python python 是最牛的 666
s1 = 'HELLO PYTHON'
s2 = 'hello python'
print(s1.islower()) # False
print(s2.islower()) # True
print(s1.isupper()) # True
print(s2.isupper()) # False
'''
lower和upper都只能改变字母不能改变其他的数据类型
islower和isupper也只能判断字母不能判断其他数据类型
'''
9.字符串的格式化输出
# 方式1: 等价于%s占位
s1 = 'my name is {} my age is {}'
print(s1.format('tony', 18)) # my name is tony my age is 18
# 方式2: 支持索引取值 并且可以重复使用
s2 = 'my name is {0} {1} my age is {1} {0} {1}'
print(s2.format('tony', 18)) # my name is tony 18 my age is 18 tony tony
# 方式3: 按k取值 也可以重复使用
s3 = 'my name is {name} {age} {name} my age is {age} {name}'
print(s3.format(name='tony', age=18)) # my name is tony 18 tony my age is 18 tony
# 方式4:按变量名取值 也是可以重复使用的
name = 'tony'
age = 18
gender = 'male'
print(f'my name is {name} {age} my age is {age} {gender} my gender is {gender} {name}')
# my name is tony 18 my age is 18 male my gender is male tony
# 方式4 就是在字符串前面加一个f
'''推荐使用方式4'''
10.count()方法
'''count可以计算字符串中指定字符的个数'''
s1 = 'my name is tony my age is 18'
print(s1.count('m')) # 3
print(s1.count('my')) # 2
'''可以是单个字符也可以是多个字符一起判断'''
11.startswith和endswith的方法
'''
startswith 是判断开头是不是指定的字符
endswith 是判断末尾是不是指定的字符
'''
i = 'jason say you is a baby'
print(i.startswith('j')) # True
print(i.startswith('ja')) # True
print(i.startswith('jason')) # True
print(i.startswith('d')) # False
print(i.endswith('y')) # True
print(i.endswith('by')) # True
print(i.endswith('baby')) # True
print(i.endswith('a')) # False
'''startswith 和 endswith 可以是单个字符判断也可以是多个字符一起判断'''
12.replace的方法
i = 'jason jason kevin tony'
print(i.replace('jason', 'jerry')) # jerry jerry kevin tony 没定义数字 那么默认替换全部指定的字符
print(i.replace('jason', 'jerry', 1)) # jerry jason kevin tony 定义了数字 那么就只会替换定义的个数 从左到右
13.+ join的方法
s1 = 'my name is '
s2 = 'tony'
print(s1 + s2) # 字符串可以使用+号拼接 my name is tony
print(s2 * 10) # 字符串也可以使用*号重复 tonytonytonytonytonytonytonytonytonytony
print(''.join(['jason', 'kevin', 'tony'])) # jasonkevintony
print('|'.join(['jason', 'kevin', 'tony'])) # jason|kevin|tony
# print('|'.join(['jason', 'kevin', 'tony', 777])) # 会报错 join指定的必须是字符串类型
14.isdigit()的方法
print('123'.isdigit()) # True
print('11.23'.isdigit()) # False
print('zbc'.isdigit()) # False
print('11as'.isdigit()) # False
'''isdigit()就是判断字符串中是否为纯数字 如果是纯数字那么返回True 如果不是那么返回False
15.index和find的方法
'''index和find都是查找指定字符的索引值'''
s = 'hello python'
print(s.find('h')) # 0
print(s.index('h')) # 0
print(s.index('he')) # 0
print(s.find('he')) # 0
print(s.find('d')) # -1
print(s.index('d')) # 报错
'''
当指定的字符在字符串中时两个都是返回字符在字符串中的索引
如果不在时 index会直接报错 find会返回-1
-1就是表示不存在找不到
'''
16.title和capitalize的方法
title是把所有的英文字母首字母大写 caoitalize是把第一个的英文字母首字母大写 ''' s = 'my jason kevin tony jerry' print(s.title()) # My Jason Kevin Tony Jerry print(s.capitalize()) # My jason kevin tony jerry
列表的内置方法
1.装换类型
# print(type(list(123))) 报错 # print(type(list(123.22))) 报错 print(list('1234abc')) # ['1', '2', '3', '4', 'a', 'b', 'c'] print(list({'name': "jason", 'pwd': 123})) # ['name', 'pwd'] """能够被for循环的数据类型都可以转换成列表"""
2.索引取值
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[0]) # jason print(l1[-1]) # tony '''可以正向取值 也可以反向取值'''
3.切片取值
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[0:3]) # ['jason', 'kevin', 'oscar'] print(l1[:]) # ['jason', 'kevin', 'oscar', 'tony'] print(l1[-4:-1]) # ['jason', 'kevin', 'oscar'] '''跟字符串的方法一样'''
4.间隔
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[::2]) # ['jason', 'oscar'] print(l1[-4:-1:1]) # ['jason', 'kevin', 'oscar'] '''跟字符串的方法是一样的'''
5.len方法
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(len(l1)) # 4 '''计算列表中有几个数据'''
作业
1.基于字符串充当数据库完成用户登录
# 1.基于字符串充当数据库完成用户登录(基础练习) # data_source = 'jason|123' # 一个用户数据 # 获取用户用户名和密码 将上述数据拆分校验用户信息是否正确 # 1.定义一个用户的数据 data_source = 'jason|123' # 2.获取用户的信息 username = input('username>>>:').strip() password = input('password>>>:').strip() # 3.判断用户输入是否正确 # 将字符串按 | 分割 得到一个列表 ['jason', '123'] if username == data_source.split('|')[0] and password == data_source.split('|')[1]: print('登入成功') else: print('用户名或密码错误')
2.基于列表充当数据库完成用户登录
# 2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据 # data_source = ['jason|123', 'kevin|321','oscar|222'] # 1.创建一个列表存入用户 data_source = ['jason|123', 'kevin|321', 'oscar|222'] # 2.获取用户信息 username = input('username>>>:').strip() password = input('password>>>:').strip() # 3.循环取出数据 for data_name in data_source: if username == data_name.split('|')[0] and password == data_name.split('|')[1]: print('登入成功') break else: print('用户名或密码错误')