数据类型内置方法理论

之前所学习的每一种数据类型本身都含有一系列的操作方法,内置方法是其中最多的(内置就是数据类型自带的功能)

python中数据类型调用内置方法的统一句式>>>:句点符就是一个点.
      ' jason'.字符串内置方法
      绑定字符串的变量名
      str字符串内置方法
ps:数据类型的内置方法比较多,需要多练

整型内置方法与操作

1.数据类型转换(讲其他数据类型转换成整型)
关键字:int(其他数据类型)
ps:浮点型可以直接转,字符串必须满足内部是
代码展示:
    l1 = '12'
    l1 = int(l1)
    print(type(l1))
    l2 = 12.23
    l2 = int(l2)
    print(type(l2))  # 输出显示已经转为整型
2.进制数转换
	十进制转其他进制:
    print(bin(100))  # 转换为2进制0b1100100
    print(oct(100))  # 转换为8进制0o144
    print(hex(100))  # 转换为16进制0x64
   其他进制转为10进制:
    print(int("0b1100100", 2))
    print(int("0o144", 8))
    print(int('0x64', 16))
3.python自身对数字的敏感度较低(精确低)
  如果进行精准的计算需要借助与模块numpy

浮点型内置方法与操作

1.类型转换
   float(其他数据类型)
   字符串里面可以允许出现一个小数点,其他都必须是纯数字
代码展示:
    l1 = 12
    l1 = float(l1)  # 将l1转换成float浮点型
    print(l1)  # 输出显示l1位12.0
    print(type(l1))  # 输出显示已经转化为浮点型 
字符串:
    l1 = '12.2'
    l1 = float(l1)
    print(l1)  # 显示输出l1位12.2
    print(type(l1))  # 输出显示已经转为浮点型float

字符串内置方法与操作

1.类型转换
	str(其他数据)进行转换
2.必须要掌握的内容:
  l1 = 'helloword'
    1.索引取值
    print(l1[0])  # h
    print(l1[-1])  # d 支持负数,也就是从末尾开始索引
    2.切片操作
    print(l1[1:5])  # 索引从1开始,5结束(不包含5)ello
    print(l1[-1:-5])  # 直接不执行,因为索引默认是从左到右的
    print(l1[-5:-1])  # 这样反向可以,owor,从-5开始-1结束,不包含-1
    3.修改切片方向
    print(l1[1:5:1])  # 默认切片间隔是1,也就是没有间隔值ello
    print(l1[1:5:2])  # 间隔改2,表示隔1个位置取值el
    print(l1[-1:-5:-1])  # 第一个-1最后的字母,-5取到倒是5结束,-1表示从右到左
    print(l1[:])  # 没有内容表示全部都要helloword
    print(l1[2:])  # 第二个开始全部都要lloword
    print(l1[:6])  # 第六个结束之前的全部都要hellow
    print(l1[::2])  # 间隔一个字母全部都要
    4.统计字符串中字符的个数
    print(len(l1))  # 9个,关键字len
    5.移除字符串收尾指定的字符
    username = input('请输入你的用户名>>>:').strip()  # 同下句更节省
    # username = username.strip()  # 表示将输入收尾的空格删掉
    if username == 'jason':  # 注意如果输入jason时后面加空格就不会显示成功
        print('登录成功')
---------------------------        
    l2_s = '  jason  '
    print(len(l2_s))  # 显示有9个字符
    l2_s = l2_s.strip()  # 删除变量名l2绑定数据值里面收尾的空格
    print(len(l2_s))  # 显示有5个字符
-------------------------
    l2_s = '###jason###'
    l2_s = l2_s.strip('#')  # 删除l2_s中的警号
    print(l2_s)  # 输出jason
    print(l2_s.lstrip('#'))  # 删除左边的警号jason###
    print(l2_s.rstrip('#'))  # 删除右边的警号###jason
    6.切割字符串中指定的字符
    l3_s = 'jason|1233|yellow'
    print(l3_s.split('|'))  # 删掉|,处理为列表['jason', '1233', 'yellow']
    name, num, hobby = l3_s.split('|') # 使用解压赋值
    print(name)  # jason
    print(num)  # 1233
    print(hobby)  # yellow
    print(l3_s.split('|', maxsplit=1))  # 从左往右第一个|
    print(l3_s.rsplit('|',maxsplit=1 ))  # 从右往左第一个
    print(l3_s.split('|', maxsplit=2))  # 从左往右前2个
    print(l3_s.split('|', maxsplit=3))  # 从左往右前3个
    print(l3_s.rsplit('|', maxsplit=2))  # 从右往左前2个
    print(l3_s.rsplit('|', maxsplit=3))  # 从右往前前3个
    print(l3_s.rsplit('|'))  # 从右往左全部切割
    7.字符串格式化输出
    format玩法1:等价位占位符
    l4_s = 'my name is {} my age is {}'.format('jason', 18, 'yellow')
    print(l4_s)  # my name is jason my age is 18
    format玩法2:索引取值并支持反复使用
    l5_s = 'my name is {0} my age is {1} {0} {1}'.format('jason', 18)
    print(l5_s)  # my name is jason my age is 18 jason 18
    format玩法3:占位符见名知意
    l6_s = 'my name si {name1} my age is {age1}'.format(name1='jason', age1=18)
    print(l6_s)  # my name si jason my age is 18
    l7_s = '我的名字是{name},我的年龄是{age},我喜欢的颜色是{solour}'.format(name='a ning', age=18, solour='yellow')
    print(l7_s)  # 我的名字是a ning,我的年龄是18,我喜欢的颜色是yellow
    format玩法4:最推荐
    name = input('username>>>":')
    age = input('age>>>>:')
    l8_s = f'my name is {name} my age is {age}'
    print(l8_s)
3.字符串需要了解的方法
    1.大小写相关
    l1_s = 'HeLLo WorD 888'
    print(l1_s.upper())  # 全大写 HELLO WORD 888
    print(l1_s.lower())  # 全小写 hello word 888
    """
    用于图片验证码,生成没有大小写统一的验证码,展示给用户看
    获取用户输入的验证码,将用户输入的验证码和当初产生的验证码统一大小写
    """
    code = '9K36Mn'
    print('展示给用户看的图片验证码', code)
    confirm_code = input('请输入验证码').strip()  # strip 移除收尾空格
    if confirm_code.upper() == code.upper():  # 此处用supper统一转为大写
        print('验证码正确')
------------------------------
    反推统一为小写怎么写
    l4_s = 'M2HjK'
    print('展示给用户看的图片验证码', l4_s)
    l5_s = input('请输入验证码').strip()  # sprit 移除收尾的空格
    if l5_s.lower() == l4_s.lower():  # 输入的以及定义的全部转小写,进行比对
        print('验证码正确')
     2.判断字符串是否是纯数字
    res =''
    print(res.isdigit())  # False 错,不是纯数字
    guess_age = input('guess_age>>>:').strip() # 输入年龄并且清掉收尾的空格,input输入都是字符串
    if guess_age.isdigit():  # 如果guess_sge是整数的字符串
        guess_age = int(guess_age)  # 那么将这个字符串转为整型
    else:  # 如果不是
        print('数字都不会打么')  # 直接输出提醒打数字
     3.替换字符串中指定的内容
    l5_s = 'my name is jason jason jason jason '
    print(l5_s.replace('jason', 'tony'))  # tony替换jason my name is tony tony tony tony
    print(l5_s.replace('jason', 'tony', 1))  # tony替换第一个jason my name is tony jason jason     jason
    print(l5_s.replace('jason', 'li lizhi', 3))  # 替换前3个
    print(l5_s.replace('jason', 'lizhi',4))  # 替换前4个
    4.字符串的拼接
    ll1 = 'hello'
    lll2 = 'word'
    print(ll1+lll2)  # helloword
    print(ll1+'$$$'+lll2)  # hello$$$word
    print(ll1 * 10)  # 打10遍
    print('|'.join(['jason', '123', 'read', 'JDB']))  # jason|123|read|JDB 关:join
    print('|'.join(['jason', 123]))  # 参与拼接的数值必须都是字符串 关:join
    print('%'.join(['jason', '123'])) # jason%123 关:join
    print('#'.join(['lizhi', 'tony']))  # lizhi#tony关:join
    5.统计指定字符出现的次数
    lll1 = 'hello word'
    print(lll1.count('h')) # 判断h出现的次数,关键字conut
    l1 = [1, 2, 2, 2, 5, 6, 2]
    print(l1.count(2))  # 4次 关键字:count
    6.判断字符串的开头或者结尾
    l1 = 'jason say hello'
    # print(l1.startswith('jason'))  # 判断jason是开头么,答案True
    # print(l1.startswith('j'))  # True
    # print(l1.startswith('say'))  # False
    # print(l1.startswith('h'))  # False
    # print(l1.startswith('s'))  # False
    print(l1.endswith('o'))  # True 判断是不是结尾
    print(l1.endswith('hello'))  # True
    print(l1.endswith('say'))  # False
    7.其他方法补充
    l1 = 'HeLLo WorD'
    print(l1.title())  # 首字母大写 Hello Word
    print(l1.capitalize())  # Hello word 第一个字母大写
    print(l1.swapcase())  # 相反的大小写 hEllO wORd
    print(l1.index('D'))  # 查看字母在第几个位置
    print(l1.index('X'))  # 找不到直接报错
    print(l1.find('o'))  # 查看字母在第几个位置
    print(l1.find('x'))  # 找不到默认回到-1
    print(l1.find('He'))  # 组合字母的位置

列表内置方法及操作

1.类型转换
	list(其他数据类型)
   ps:能够被for循环的数据类型都可以转成列表
    print(list('hello')) # 转字符串['h', 'e', 'l', 'l', 'o']
    print(list({'name':'jason', 'pwd':123}))  # 转字典['name', 'pwd']
    print(list((1, 2, 3, 4)))  # 转元组[1, 2, 3, 4]
    print(list({1, 2, 3, 4, 5}))  # 转集合[1, 2, 3, 4, 5]

2.需要掌握的方法
    l1 = [111, 222, 333, 444, 555, 666, 777, 888]
    # 1.索引取值
    print(l1[0])  # 取第一个
    print(l1[-1])  # 取最后一个
    print(l1[5])  # 取第五个 666
    2.切片操作 与字符串一致
    print(l1[1:5])  # 第一个开始,第五个结束,不包含第五个
    print(l1[-5:-1])  # 倒是第五个开始,倒数第一个结束,不包含倒一
    print(l1[1:])  # 从第一个开始到结束全部
    3.间隔数方向,与字符串一致
    print(l1[0:5:2])  # 从0开始到5结束,间隔1取
    4.统计列表中数据值的个数
    print(len(l1))  # 关键字:len 8个
    5.数据值修改
    l1[0] = 123  # 取l1第0为111,修改为123
    print(l1)
    l1[5] = 785
    print(l1)
    6,列表添加数据值
    方式1:尾部增加数据
    l1.append('吃饭了')  # 添加末尾[111, 222, 333, 444, 555, 666, 777, 888, '吃饭了']
    print(l1)
    l1.append(['jason', 'tony', 'tom'])
    print(l1)  # [111, 222, 333, 444, 555, 666, 777, 888, '吃饭了', ['jason', 'tony', 'tom']]
    方式2:任意位置插入数据值
    l1.insert(0, 'jason')  # 讲列表0的位置给’jason
    print(l1)
    l1.insert(3, 'tom')  # 将列表3的位置给‘tom
    print(l1)
    方式3:扩展列表,合并列表
    ll1 = [11, 22, 33]
    ll2 = [44, 55, 66]
    print(ll1+ll2)  # [11, 22, 33, 44, 55, 66]
    ll1.extend(ll2)  # 相当于for循环把ll2中一个个拿出来,然后append添加到ll1末尾
    print(ll1)
    for i in ll2:
        ll1.append(i)
    print(ll1)
    7. 删除列表数据
    方式1:通用的删除关键字del
    del ll1[0]  # 删除ll1第0个数字
    print(ll1)  # [22, 33]
    方式2:remove
    ll1.remove(11)  # 删除11
    print(ll1)  # [22, 33]
    方式3:pop
    ll1.pop(2)  # 括号里面是索引值
    print(ll1)  # [11, 22]
    ll1.pop()  # 括号没数字,默认最后一个
    print(ll1)  # [11, 22]
    8排序
    # ss = [54, 99, 55, 76, 12, 43, 76, 88, 99, 100, 33]
    ss.sort()  # 默认是升序
    print(ss)  # [12, 33, 43, 54, 55, 76, 76, 88, 99, 99, 100]
    ss.sort(reverse=True)  # 更改为降序
    print(ss)  # [100, 99, 99, 88, 76, 76, 55, 54, 43, 33, 12]
    9.统计列表中某个数据值出现的次数
    print(ss.count(99))  # 99出现的个数 2
    10.颠倒列表顺序
    ll1.reverse()  # 将列表原来的顺序颠倒
    print(ll1)  # 33, 22, 11]

可变类型与不可变类型

s1 = '$$jason$$'
    l1 = [11, 22, 33]
    s1.strip('$')  # 删除符号$
    print(s1)  # $$jason$$
"""字符串在调用内置方法之后并不会修改自己,而是产生了一个新的结果
如何查看调用方法之后有没有新的结果,可以在调用该方法的代码左侧添加变量名和赋值符号
  res = s1.strip('$')
"""
    ret = l1.append(44)
    print(l1)  # [11, 22, 33, 44]
    print(ret)  # None,没有找到
    列表在调用内置方法之后修改的就是自身 并没有产生一个新的结果
    l1 = [11, 22, 33]
    print(l1)  
    print(id(l1))  # 内存地址:2442343205824
    l1.append(44)  # 末尾添加44
    print(l1)
    print(id(l1))  # 2442343205824
    
不可变类型:值改变,内存地址肯定变
    res = '$hello word$'
    print(res)
    print(id(res))  # 2022789544688
    res = res.strip('$') # 删除$
    print(res)
    print(id(res))  # 2674751831216

作业

1.
    data_source = 'jason|123'  # 条件
    # 1.将用户名和密码拿出来
    name, password = data_source.split('|')  # 2.关键字split删除'|',解压赋值
    # print(name, password)  # 3.确定用户名和密码
    # 4.用户输入
    username = input('请输入你的账户名>>>>:').strip()  # 删除输入的空格方式出错
    is_password = input('请输入你的密码>>>:').strip()  # 删除输入的空格方式出错
    # 5,判断用户输入的和数据库是否一致
    if username == name and is_password == password:
        print('登录成功')
    else:
        print('账号密码错误')
2.
    data_source = ['jason|123', 'kevin|321', 'oscar|222']  # 条件
    # 1.用户输入
    username = input('请输入你的账户>>>:').strip()  # 2.输入账户名去掉首尾空格
    password = input('请输入你的密码>>>:').strip()  # 3.输入密码去掉首尾空格
    l1 = username + '|' + password  # 将两个字符串组合
    # print(l1)
    if l1 in data_source:  # 判断组合的账号密码是否在数据库里面
        print('登录成功')
    else:
        print('登录失败')
3.
# 用列表编写用户管理系统,那么肯定是要有列表的
data_source = ['jason', 'kevin', 'oscar']
# 1.姓名管理系统,肯定要有用户输入
username = input('请输入你的账户名>>>:').strip()  # 删掉空格
password = input('请输入你的密码>>>:').strip()  # 删掉空格
# 2.用户输入正确的账号密码可以进系统
if username in data_source:  # 判断输入的用户名和密码是否是管理员账号
    while True:  # 因为要重复执行命令,所以下面的指令都要进入循环
        l1 = input('请输入你的指令>>>:')
        if l1.isdigit():  # 判断指令是不是数字
            l1 = int(l1)
        else:
            print('数字都不会打么')
    # 3.用户登录成功就可以
    # 4.登录成功,输入1执行添加用户名功能
        if l1 == 1:  # 5.如果用户输入的是1,那么执行下面的操作
            l2 = input('请输入添加的用户名>>>:')  # 输入添加的用户名
            data_source.append(l2)  # 添加用户名到列表,关键字append
        elif l1 == 2:
            print(data_source[:])
        elif l1 == 3:
            l3 = input('请输入删除的用户名>>>:')  # 输入删除的用户名
            data_source.remove(l3)  # 指定删除
else:
    print('没有管理员权限')