ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据类型的内置方法

2022-06-25 21:31:53  阅读:94  来源: 互联网

标签:字符 内置 name 索引 s1 数据类型 字符串 print 方法


数据类型的内置方法

数据类型的内置方法简介

数据类型的内置方法相当于数据类型所拥有的独特的功能,可能这些功能相似也可能不相似,好比个人的特长是可能不一样的。

数据类型内置方法基本方式:
	数据类型.(点)方法名()

数据类型的内置方法

整型(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('登录失败')
    
这题作业我的问题首先多用了一个循环,无论是否写循环都不会影响最后的结果,写上多余,并且我一直把最后登录失败打印'登录失败'的语句位置放错,这个是我最大的问题,并且我是问了同学才知道'登录失败'应该放在哪里,对循环语句先后执行还是模糊。

标签:字符,内置,name,索引,s1,数据类型,字符串,print,方法
来源: https://www.cnblogs.com/xiaojudeboke/p/16412450.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有