玛卡巴卡的卡巴卡玛 发表于 2022-8-12 21:09:21

数据类型的内置方法

数据类型的内置方法

数据类型的内置方法简介

数据类型的内置方法相当于数据类型所拥有的独特的功能,可能这些功能相似也可能不相似,好比个人的特长是可能不一样的。
数据类型内置方法基本方式:
        数据类型.(点)方法名()数据类型的内置方法

整型(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)            # l
print(s1[-3])         # o


2.切片取值
[:]中有两个数值且用:隔开,左边数字代表第一个索引的字符,右边的数值代表最后一个索引的字符,若两个数值都为负数代表反向取值,但是还是从左往右切,且负数小的在左负数大的在右。
s1 = 'hello word'
print(s1)          # llo
print(s1[-2:-6])      # 无
print(s1[-6:-2])      # o wo

[::]中三个数值且用:隔开,左边数字代表第一个索引的字符,中间的数值代表最后一个索引的字符,右边的数值代表可差/隔几个取值,从左向右取值。
s1 = 'hello word'
print(s1)       # el od
'''[::],若想反向取值必须要三个数值都为负数,且从右往左取值'''
s1 = 'hello word'
print(s1)       # 无
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)      # ello wo
print(s1)      # el o
print(s1)       # 无
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)    # age
print(s1[-2])   # 22

3.切片操作
list[左:右],左边的数值代表第一个索引,右边的数值代表最后一个索引,可去这之间的数据值,若想反向取值可加符号,但是负数小的在左边负数大的在右边。
s1 = ['name', 'age', 22, 33]
print(s1)      # ['age', 22]
print(s1[:])      # ['name', 'age', 22, 33]
print(s1[-1:-2])    # [] 取不到
print(s1[-2:-1])    #


4.间隔/方向
list[左:中:右],左边的数值代表第一个索引,中边的数值代表最后一个索引,右边的数值代表间隔几索取的值,若为负数则代表反向取值,且负数小的在左负数大的在右,但是从左向右取值。
s1 = ['name', 'age', 22, 33]
print(s1)    # ['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# 解压赋值,我理解为索引取值
password = info
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      # 解压赋值
    password = info
    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
      password = info
    if username == name and password == pwd:
      print('登录成功')
      break
else:       # 注意,这句的位置
    print('登录失败')
   
这题作业我的问题首先多用了一个循环,无论是否写循环都不会影响最后的结果,写上多余,并且我一直把最后登录失败打印'登录失败'的语句位置放错,这个是我最大的问题,并且我是问了同学才知道'登录失败'应该放在哪里,对循环语句先后执行还是模糊。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 数据类型的内置方法