数据类型的内置方法

数据类型的内置方法简介

内置方法即是每个数据类型自带的功能

  • 数据类型总类:
    1.整型 2.浮点型 3.列表型 4.字典型
    5.字符型 6.布尔值 7.元组 8.集合

使用数据类型的内置方法统一采用句点符(.)
如:'rain'. 字符串必备的方法()
name = 'rain'
name. 字符串必备的方法()

整型相关方法

  • 关键字
    int()
  • 整型就是整数 ,主要用于计算,没有内置方法
  • 类型转换
    int('代转换的数据')
    字符串中转换的必须是纯数字,出现其他形式立即报错。
  • 进制转换
print(bin(100))  #bin()将十进制转换为二进制    0b 是二进制的标识  0b1100100
print(oct(100))  #oct()将十进制转换为八进制    0o 是八进制的标识  0o144
print(hex(100))  #hex()将十进制转换为十六进制  0x是十六进制的标识  0x64
#若前面没有标识符 则默认为十进制
#转换为十进制:
print(int(需转换的数值))
  • 浮点型相关方法

  • 关键字
    folat()

  • 类型转换
    浮点型类型转换仅可以转换一个小数点的数据,若为多个小数点,那么直接报错。
    (python 对数字不敏感,很容易出错,但可以借助于python开发的模块来抵消)

  • 针对布尔值的特殊情况

print(folat(True)) # 1.0
print(folat(False)) # 0.0
print(int(True))   # 1
print(int(Flase))  # 0

当转换值为布尔值时,所转换的是该布尔值所对应的数值(True-1;Flase-0)

字符串相关方法

  • 关键字:
    str()

  • 类型转换
    字符串可转换所有数据值

  • 转换的方法
    1.索引取值 : 单个字符 (支持负数)

s1 = 'hello world'
print(s1[0]) #h
print(s1[-1]) #d
"""所提取的为负数时,所打印的内容是由右往左依此读取所打印数的内容"""

2.切片取值:
多个字符 ,支持负数,切片的顺序默认为从左往右

s1 = 'hello world'
print(s1[0:3]) #hel 从索引0的位置一直到索引2的位置(顾头不顾尾)
print(s1[-1:-4]) #由于切片的顺序是默认为从左往右,则打印不出所实现的值
print(s1[-1:-4:-1]) # dlr 可以通过第三个参数的正负1来控制方向
print(-4:-1) # lro 顾头不顾尾

切片取值时,顺序默认从左往右,当第三个参数赋值为-1时,循序变为从右往左打印,若没有给第三个参数赋值则默认为1。取值的时候是遵循顾头不顾尾的原则,第二个参数数默认减一

  • 3.间隔/方向
s1 = 'hello world'
print(s1[:])   # 输出所有
print(s1[::2]) # 针对整个字符串 各一个去一个
print(s1[0:5:1]) # hello 默认1可以不写
print(s1[0:5:2]) # hlo  建个一个取一个

间隔方向默认为从左往右

  • 4.统计字符串中字符的个数
print(len(s1))  #print(len('hello world'))

在使用len()统计字符个数时,其中的空格也在统计范围内。

  • 5.移除字符首尾指导的字符
username = input('username>>>:')
if username == 'back':
    print('登陆成功')
else:
    print('你是谁,一边玩去!')
name = '   back   '
print(len(name))     # 10
print(name.strip(), len(name.strip()))  # back 4
res = name.strip()
'''字符串调用内置方法 不是改变原数据 而是产生了新的数据'''
print(name, len(name))  # back 10
print(res, len(res))   # back 4

运用字符串用内置的方法消除字符时,所表示的不是改变原始数据,而是产生了新的数据,随后输出来调用改变后的数据
还可以进行左消除或者右消除操作:
即在strip前加l或者r
l即left 即左消除
r即right 即右消除

  • 按照指定的字符切割字符串
info = 'back|111|run'
'''当字符串中出现了连续的特征符号 应该考虑使用切割操作'''
res = info.strip('|')  # 切割字符串的结果是一个列表
print(res, type(res))  #  back|111|run   <class 'str'>
name, paw, hobby = info.split('|')  #把info的值分别赋值给name, paw, hobby
print(info.split('|', maxsplit=1))  # 从左往右 只切一次
print(info.rsplit('|', maxsplit=1))   # 从右往左 只切一次

若出现连续的特征符号,考虑用切割操作。
使用切割字符串时,默认为从左往右切割,若split前由r时,则为从右往左切割
当需要切割次数时,使用maxsplit ,当后面的数值为多少就是需要切割多少次。

  • 7.字符串大小写相关
l1 = 'Hello World 123 你会吗?'
print(l1.lower())  # 把字符串中所有的字母置换成全小写形式其他不变
print(l1.upper())  # 把字符串中所有的字母置换成全大写形式其他不变

print(l1.islower())  # 判断字符串中所有的字母是否是全小写
print(l1.isupper())  # 判断字符串中所有的字母是否是全大写

code = 'BackJia123'
print('随机验证码')
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('验证码错误')

进行大小写的相关操作时,使用lower()或者upper()操作可将字符串中所由字母进行大小写转换,进而使大小写穿插输入达到一致的结果。
若其前加is 则为判断该字符串是否是全大写,或者全是小写。

  • 8.字符串的格式化输出
# 1.等价于%s占位
res1 ='my name is {} my age is {}'
print(res1.format('back',18))
"""相当于使用{}替代了%s的占位符"""

# 2. 支持索引取值 并且支持重复使用
res2 = 'my name is {0} my age is {1} {0} {1} {1} {1}'
print(res2.format('back', 18))
"""当列表中的数据需要多次调用时采用此方法可适当的减少输入,0,1为列表中的位置"""
# 3: 支持关键字取值(按k取值) 并且支持重复使用
res3 = '{name} {name} {age} my name is {name} my age is {age}'
print(res3.format(name='back', age=18))
""" 于方式2相似,用字典中的K值来调取信息进而填写输出 """

# 4.常用操作
name ='back'
age = 18
print(f'my name is {name} my age is {age} {name} {age}')
"""在格式化输出前加f方法直接获取上述字符内容并进行填写操作,更加简洁"""

用字符串替换格式化输出,有四种方式,与前三种相比较,在输出结果前加f操作更加方便快捷

  • 9.统计字符串中指定字符出现的次数
 # res = 'sdashdjasdwjjkashdjasdjjqwhasjjahdjjwqhdjjkasdhws'
    # print(res.count('s'))
    # print(res.count('jj'))

相比于循环操作,采用.count()方法能够更加快捷的找到字符串中所需要的数据

  • 10.判断字符串的开头或者结尾
res = 'back say ha ha ha heiheihei'
print(res.startswith('back')) # True
print(res.startswith('b')) # True
print(res.startswith('s')) # False
print(res.endswith('heiheihei'))# True
### print(res.endswith('hei'))  # True
print(res.endswith('h')) # False

采用swith()方法判断字符串的开头或者结尾
swith前为start时是判断开头是否正确 可以是首字母,也可是前面的连续字母
swith前为end 时,则是判断结尾是否正确。可以是尾字母,也可以是最后的连续字母(这里是从左往右)

  • 11.字符串替换
res = 'abcd abcd abcd SB SB SB'
print(res.replace('abcd', 'tony'))  # 从左往右全部替换
print(res.replace('abcd', 'tony', 1))  # 从左往右替换指定个数

采用replace()方法可以将字符串中的代码进行替换(遵循从左往右的原则)
在原数据,替换数据之后填写一个数据值则为替换间隔数(没有填写则默认为0)

  • 12.字符串的拼接
res1 = 'hello'
res2 = 'world'
print(res1 + res2)  # 字符串支持加号拼接
print(res1 * 10)  # 字符串支持乘号重复
print(''.join(['hello', 'world', 'hahaha']))  # join方法拼接
print('|'.join(['hello', 'world', 'hahaha']))  # join方法拼接
# print('$'.join(['jason', 'say', 666]))  # 列表中的数据都必须是字符串类型  报错!!!

字符串的拼接支持+ * 形式的拼接,拼接的结果为没有间隔的数据。
当使用join()方法进行拼接时,join前的单引号中若为|则使用|来将其拼接结果进行分割。若为空则视为没有间隔
列表中的数据都必须是字符串类型否则报错。

  • 13.判断字符串中是否为纯数字
print('123'.isdigit())  # True
print('123a'.isdigit())  # False
print(''.isdigit())  # False

采用isdigit()方法对整型进行判断处理

  • 14.查找某个字符对应的索引值
res = 'hello world jason'
print(res.index('o'))  # 10
print(res.find('j'))  # 10
'''index查找索引 如果没有则报错'''
# print(res.index('d',0,5))
'''find查找索引 如果没有则返回-1'''
# print(res.find('d',0,5))  # -1

使用index()时,如果在字符串中没有找到对应字符,则返回一个报错
使用find()时,如果在字符串中没有找到对应字符,则返回-1,不抛出报错。

  • 15.正文相关操作
res = 'my name is back'
print(res.title())  # My Name Is Back
print(res.capitalize())  # My name is back

capitalize(): 字符串第一个字母大写
title(): 字符串内的所有单词的首字母大写

列表的相关方法

  • 关键字:
    list

  • 类型转换
    能够被for循环的数据类型都能转换成列表
    print(type(list(数据 )))

  • 方法

l1 = ['back', 'kevin', 'oscar', 'tony']
# 1.索引取值
print(l1[0])  #back
print(l1[-1]   #tony
# 2.切片操作
print(l1[0:3])
print(l1[:])
print(l1[-4:-1])
 # 3.间隔/方向
 print(l1[::2])
# 4.统计列表中数据值的个数
print(len(l1))  # 4

方法与字符类型转换方法相同

今日作业

    1. 1.基于字符串充当数据库完成用户登录(基础练习)
      data_source = 'jason|123' # 一个用户数据
      获取用户用户名和密码 将上述数据拆分校验用户信息是否正确

data_source = 'jason|123'
name, abc = data_source.split('|')  # 分别赋值给username, abc
for i in range(5):
username = input('username>>>:')
paw = input('paw>>>:')
    if username == name and paw == abc: 
        print("登录成功")
    else:
        print("用户名或密码错误")

image

  • 2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
    data_source = ['jason|123', 'kevin|321','oscar|222']
username = input('username>>>:')
paw = input('paw>>>:')
data_source = ['jason|123', 'kevin|321', 'oscar|222']
data_source1 = data_source[0]  # 将data切片成三个部分
data_source2 = data_source[1]
data_source3 = data_source[2]
name1, paw1 = data_source1.split('|')
name2, paw2 = data_source2.split('|')
name3, paw3 = data_source3.split('|')

if username == name1 and paw == paw1 or username == name2 and paw == paw2 or username == name3 and paw == paw3:
    print("登陆成功")
else:
    print("用户名或密码错误")

优化后:

data_source = ['jason|123', 'kevin|321', 'oscar|222']
falg = True
while falg:
    username = input('username>>>:')
    paw = input('paw>>>:')
    for a in data_source:
        if username == a.split('|')[0]:
            if paw == a.split('|')[1]:
                print('登录成功')
                falg = False
            break

    else:
        print('用户名或密码错误')

image

posted @ 2022-06-24 20:54  Nirvana*  阅读(59)  评论(0)    收藏  举报