数据类型的内置方法
数据类型的内置方法简介
数据类型的内置方法相当于数据类型所拥有的独特的功能,可能这些功能相似也可能不相似,好比个人的特长是可能不一样的。- 数据类型内置方法基本方式:
- 数据类型.(点)方法名()
复制代码 数据类型的内置方法
整型(int)
- 1.整型就是,整数,数字一般是用于算术运算,整型没有内置方法。
- 2.类型转换:int(要转换的变量名或数据)
- 3.int可进行类型转换,当输入字符串时只能是纯数字且为整数才可以转换
- # 类型转换
- print(type(int('222'))) # <class 'int'>
- print(type(int('-222'))) # <class 'int'>
- print(type(int('22.2'))) # 报错
- print(type(int('222w'))) # 报错
- 4.进制转换
- 可以将整型的数值进行进制转换,整型中的整数本身就是十进制,可转换为二进制、八进制、十六进制。
- bin() 将十进制(整数)转二进制
- oct() 将十进制(整数)转八进制
- hex() 将十进制(整数)转十六进制
- # 进制转换
- print(bin(213)) # 0b11010101 0b开头的为二进制
- print(oct(213)) # 0o325 0o开头的为八进制
- print(hex(213)) # 0xd5 0x开头的为十六进制
- # 默认十进制前没有任何标志
- # python可自动识别进制数
- print(int(0b11010101)) # 213
- print(int(0o325)) # 213
- print(int(0xd5)) # 213
- # 可指定进制数转化
- print(int('0b11010101', 2)) # 213
- print(int('0o325', 8)) # 213
- print(int('0xd5', 16)) # 213
-
- 5.针对布尔值
- 可将布尔值转换为对应的数值
- print(int(True)) # 1
- print(int(False)) # 0
复制代码 浮点型(float)
- 1.类型转换
- 输入的字符型为整数可转换为为浮点型,后面加了.0;只能转换含有一个小数点的数值。
- print(float('222')) # 222.0
- print(float('-222')) # -222.0
- print(float('22.2')) # 22.2
- print(float('222w')) # 报错
- print(float('222.222.222')) # 报错
-
- 2.针对布尔值
- 可将布尔值转换为对应的数值后面加.0
- print(float(True)) # 1.0
- print(float(False)) # 0.0
-
- 3.补充说明
- python对数字的敏感度不高,有些数值进行计算时会出错。
- print(23.0 * 3.2) # 73.60000000000001
复制代码 字符型(str)
- 1.索引取值
- []中只有一个数值只能从左到右取单个字符,且空格也算一个字符,若带有符号则代表反向索取即从右往左
- s1 = 'hello word'
- print(s1[3]) # l
- print(s1[-3]) # o
- 2.切片取值
- [:]中有两个数值且用:隔开,左边数字代表第一个索引的字符,右边的数值代表最后一个索引的字符,若两个数值都为负数代表反向取值,但是还是从左往右切,且负数小的在左负数大的在右。
- s1 = 'hello word'
- print(s1[2:6]) # llo
- print(s1[-2:-6]) # 无
- print(s1[-6:-2]) # o wo
- [::]中三个数值且用:隔开,左边数字代表第一个索引的字符,中间的数值代表最后一个索引的字符,右边的数值代表可差/隔几个取值,从左向右取值。
- s1 = 'hello word'
- print(s1[1:10:2]) # el od
- '''[::],若想反向取值必须要三个数值都为负数,且从右往左取值'''
- s1 = 'hello word'
- print(s1[1:3:-1]) # 无
- print(s1[-1:-3:1]) # 无
- print(s1[-1:-3:-1]) # dr
- 3.间隔方向
- [:]代表取字符串内所有的值
- [::]左边数字代表第一个索引的字符,中间的数值代表最后一个索引的字符,最右边的数值代表间隔数也叫差数,若要反向取值时,都要为负数,且负数大的在左负数小的在右。
- s1 = 'hello word'
- print(s1[:]) # hello word
- print(s1[::3]) # hlwd
- print(s1[1:8:1]) # ello wo
- print(s1[1:8:2]) # el o
- print(s1[1:8:-1]) # 无
- print(s1[-1:-8:-1]) # drow ol
- print(s1[-8:-1:-1]) # 无
- 4.统计字符串中的个数
- len(要统计的变量名或字符串)
- 字符串(引号)内的空格、标点符号、特殊符号都算一个字符
- s1 = 'In the future, you will thank you for your efforts'
- print(len(s1)) # 50
- 5.移除字符串首尾字符的个数
- 字符串或变量名.strip(要移除的字符) # 移除首尾的字符
- 字符串或变量名.lstrip(要移除的字符) # 移除左边的字符
- 字符串或变量名.rstrip(要移除的字符) # 移除右边的字符
- '''注意的是只能移除首尾,中间不可移除'''
- s1 = ' hello word '
- print(s1, len(s1)) # hello word 16
- print(s1.strip(), len(s1.strip())) # hello word 10
- s2 = '$$$hahahha$wowowo$$$'
- print(s2.lstrip('$')) # hahahha$wowowo$$$
- print(s2.rstrip('$')) # $$$hahahha$wowowo
- '''字符串调用内置方法,不是改变原数据值,而是产生了新的数据值'''
- s2 = '$$$hahahha$wowowo$$$'
- s2.strip('$')
- print(s2) # $$$hahahha$wowowo$$$
- print(s2.strip('$')) # hahahha$wowowo
- 应用eg:
- # username = input('username>>>:')
- # username = username.strip() # 等同于 username = input('username>>>:').strip() 先获取用户输入,然后移除首尾空格,再赋值给变量名
- # if username == 'orange': # ' orange ' == 'orange'
- # print('登录成功')
- # else:
- # print('登录失败')
- 6.按照指定的字符切割字符串
- 按照指定的字符将字符串切割成几个字符串,以列表的方式输出
- 字符串或变量名.split(要切割的字符) # 要切割所有的字符
- 字符串或变量名.split(要切割的字符, maxsplit=整数) # 要切割从左到右的第几个的字符
- 字符串或变量名.rsplit(要切割的字符, maxsplit=整数) # 要切割从右到左的第几个的字符
- '''切割字符串后打印输出的就列表'''
- s1 = '今天下雨了*我不喜欢下雨*但是我又讨厌热'
- print(s1.split('*')) # ['今天下雨了', '我不喜欢下雨', '但是我又讨厌热']
- print(type(s1.split('*'))) # <class 'list'>
- info1, info2, info3 = s1.split('*') # info1, info2, info3 = ['今天下雨了', '我不喜欢下雨', '但是我又讨厌热']
- print(info1, info2, info3) # 今天下雨了 我不喜欢下雨 但是我又讨厌热
- print(s1.split('*', maxsplit=1)) # ['今天下雨了', '我不喜欢下雨*但是我又讨厌热']
- print(s1.rsplit('*', maxsplit=1)) # ['今天下雨了*我不喜欢下雨', '但是我又讨厌热']
- 7.字符串大小写
- 可以判断字符串中的字母是否大小写,只能对字母有效果,应用字母验证码
- 字符串或变量名.lower() # 将字母都转换成小写
- 字符串或变量名.upper() # 将字母都转换成大写
- 字符串或变量名.islowwer() # 判断字母是否小写
- 字符串或变量名.upper() # 判断字母是否大写
- s1 = 'HELLO WORD 8888'
- s2 = 'hello word 8888'
- s3 = 'Hello word 8888'
- print(s1.lower()) # hello word 8888
- print(s2.upper()) # HELLO WORD 8888
- print(s3.lower()) # hello word 8888
- print(s3.upper()) # HELLO WORD 8888
- print(s1.isupper()) # True
- print(s1.islower()) # False
- print(s2.isupper()) # False
- print(s2.islower()) # True
- print(s3.islower()) # False
- print(s3.isupper()) # False
- 应用eg:
- # code = 'XwQc198'
- # print('随机验证码:%s' % code)
- # confirm_code = input('请输入验证码:')
- # code_upper = code.upper() # 将验证码转大写
- # confirm_code_upper = confirm_code.upper() # 将输入的验证码转大写
- # if code_upper == confirm_code_upper: # 统一转换大写或者小写。再判断是否相同
- # if confirm_code.upper() == code.upper(): # 统一转换大写或者小写,再判断
- # print('验证码正确')
- # else:
- # print('验证码错误')
- 8.格式化输出
- format()
- 方式1:等价于%s占位,利用{}
- s1 = 'my name is {}, my age is {}'
- print(s1.format('orange', 22)) # my name is orange, my age is 22
- 方式2:支持索引取值,并可重复使用,利用{索引值}
- s2 = '{0} {1} my name is {0}, my age is {1} {0} {1}'
- print(s2.format('orange', 22)) # orange 22 my name is orange, my age is 22 orange 22
- 方式3:支持关键字取值,相当于按K取值,并且支持重复使用,利用{变量名},用赋值的方式给值
- s3 = '{name} {age} my name is {name}, my age is {age} {name} {age}'
- print(s3.format(name='orange', age=22)) # orange 22 my name is orange, my age is 22 orange 22
- 方式4:先定义好变量然后用{变量名}占位(必记,重点!!!)
- 字符串的外面要加上'f',首先要定义好变量,利用{变量名}
- name = 'orange'
- age = 18
- print(f'{name} {age} my name is {name}, my age is {age} {name} {age}') # orange 22 my name is orange, my age is 22 orange 22
- 9.统计字符串中指定字符出现的次数
- count()
- 字符串或变量名.count(指定的字符)
- 相当于利用循环查询指定字符的次数
- s1 = 'I want to See Sea'
- print(s1.count('e')) # 3
- 10.判断字符串的开头或者结尾
- 字符串或变量名.startswith(指定的字符) # 判断指定字符是否在开头
- 字符串或变量名.endswith(指定的字符) # 判断指定字符是否在结尾
- s1 = 'I want to See Sea'
- print(s1.startswith('I')) # True
- print(s1.startswith('a')) # False
- print(s1.endswith('I')) # False
- print(s1.endswith('a')) # True
- 11.字符串的替换
- 字符串或变量名.replace(原来的字符(老字符),指定的字符(新字符),数值) # 将指定的字符替换成原来的字符,数值代表替换的个数
- 从左向右替换,没有从右向左替换
- s1 = 'I want to see sea sea sea'
- print(s1.replace('sea', '大海', 2)) # I want to see 大海 大海 sea
- 12.字符串的拼接
- 拼接的字符.join(要被拼接的字符)
- 可使用某些符号:+、*、|、$、@...用列表将要拼接的内容放入列表中,但是列表中的数据必须是字符串
- 使用加号在拼接字符串的量不大时使用,否则会消耗内存,如果字符串量大推荐使用join
- print('girl' + 'friend') # girlfriend
- print('go' * 6) # gogogogogogo
- print(''.join(['girl', 'friend', 'you'])) # girlfriendyou
- print('@'.join(['girl', 'friend', 'you'])) # girl@friend@you
- print('$'.join(['girl', 'friend', 'you'])) # girl$friend$you
- print('$'.join(['girl', 'friend', 'you', 8888])) # 报错
- 13.判断字符串中是否是纯数字
- 字符串或变量名.isdigit()
- print('123'.isdigit()) # True
- print('123a'.isdigit()) # False
- print(''.isdigit()) # False
- 14.查找某个字符对应的索引值
- index(查找字符,首索引,尾索引)
- find(查找字符,首索引,尾索引)
- index在进行索引查找时,从左向右找,如果没有查找到对应的索引值则会报错
- find在进行索引查找时,从左向右找,如果没有查找到对应的索引值则会返回数值-1
- s1 = 'I want to See'
- print(s1.index('s')) # 10
- print(s1.find('s')) # 10
- print(s1.index('s', 0, 6)) # 报错 从索引0找到索引6
- print(s1.find('s', 0, 6)) # -1
- 15.正文相关操作
- 字符串或变量名.title()
- 将字符串的中单词的首字母大写,针对英文单词,对中文无效
- s1 = 'i want to see'
- print(s1.title()) # I Want To See
- s2 = '我想要回家'
- print(s2.title()) # 我想要回家
复制代码 列表相关方法list()
- 1.类型转换
- 能够被for循环的数据类型都可以转换成列表,比如字典,元组,集合,字符串
- print(list('222aaa'))
- print(list({'name': 'orange', 'age': 22}))
- 这里我误以为整型可以循环,数和集合是两个概念,可以遍历集合但是不能遍历整数,因为整型是不可重复反馈的活动的对象,即不是可迭代对象。如整型和字符型。
- 2.索引取值
- 若索引为整数表示从左往右取,若索引为负数,代表反向取从右往左
- s1 = ['name', 'age', 22, 33]
- print(s1[1]) # age
- print(s1[-2]) # 22
- 3.切片操作
- list[左:右],左边的数值代表第一个索引,右边的数值代表最后一个索引,可去这之间的数据值,若想反向取值可加符号,但是负数小的在左边负数大的在右边。
- s1 = ['name', 'age', 22, 33]
- print(s1[1:3]) # ['age', 22]
- print(s1[:]) # ['name', 'age', 22, 33]
- print(s1[-1:-2]) # [] 取不到
- print(s1[-2:-1]) # [22]
- 4.间隔/方向
- list[左:中:右],左边的数值代表第一个索引,中边的数值代表最后一个索引,右边的数值代表间隔几索取的值,若为负数则代表反向取值,且负数小的在左负数大的在右,但是从左向右取值。
- s1 = ['name', 'age', 22, 33]
- print(s1[0:3:2]) # ['name', 22]
- print(s1[-1:-3:1]) # [] 无
- print(s1[-3:-1:1]) # ['age', 22]
- 5.统计列表个数
- 统计列表个数是以统计列表中逗号隔开数据值的个数
- s1 = ['name', 'age', 22, 33]
- print(len(s1)) # 4
复制代码 作业
- 1.基于字符串充当数据库完成用户登录(基础练习)
- data_source = 'jason|123' # 一个用户数据
- 获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
- # 1.先将字符串进行切割,切割除去‘|’并绑
- # 2.字符串切割后是列表
- # 3.可索引取列表中的值
- # 4.判断索引取值后的数据与用户登录所输入的数据是否相等
- data_source = 'jason|123'
- info = data_source.split('|') # 切割除去'|'绑定给info
- username = info[0] # 解压赋值,我理解为索引取值
- password = info[1]
- name = input('请输入你的用户名:')
- pwd = input('请输入你的密码:')
- if username == name and password == pwd: # 判断用户名是否正确
- print('登录成功')
- else:
- print('登录失败')
复制代码- 2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
- data_source = ['jason|123', 'kevin|321','oscar|222']
- # 1.先循环列表,循环获取列表中的值,则按照索引可别分出各个数据值
- # 2.将循环取出的各个数据值进行切割,切割除去‘|’并绑定给info,info是列表
- # 3.将切割后的小列表进行索引取值
- # 4.将取出的值进行判断
- data_source = ['jason|123', 'kevin|321', 'oscar|222']
- name = input('请输入你的用户名:')
- pwd = input('请输入你的密码:')
- for i in data_source: # 循环获取列表中的值
- info = i.split('|') # 切割小列表中的字符串
- username = info[0] # 解压赋值
- password = info[1]
- if username == name and password == pwd:
- print('登录成功')
- break
- else: # 注意,这句的位置,先循环并判断列表中的用户名是否存在,然后不存在输出登录失败
- print('登录失败')
- # 1.先循环列表,循环获取列表中的值,则按照索引可别分出各个数据值
- # 2.将循环取出的各个数据值进行切割,切割除去‘|’并绑定给info,info是列表
- # 3.将切割后的小列表循环进行索引取值
- # 4.将取出的值进行判断
- data_source = ['jason|123', 'kevin|321', 'oscar|222']
- name = input('请输入你的用户名:')
- pwd = input('请输入你的密码:')
- for i in data_source: # 循环获取列表中的值
- info = i.split('|')
- for v in info: # 循环获取每个小列表中的值,其实不用循环,多余的一步
- username = info[0]
- password = info[1]
- if username == name and password == pwd:
- print('登录成功')
- break
- else: # 注意,这句的位置
- print('登录失败')
-
- 这题作业我的问题首先多用了一个循环,无论是否写循环都不会影响最后的结果,写上多余,并且我一直把最后登录失败打印'登录失败'的语句位置放错,这个是我最大的问题,并且我是问了同学才知道'登录失败'应该放在哪里,对循环语句先后执行还是模糊。
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |