数据类型的内置方法

数据类型的内置方法

一、数据类型内置方法理论

1.内置方法是每个数据类型自带的功能
2.python中数据类型调用内置方法的统一句式:句点符(.)
  绑定字符串的变量名.字符串内置方法
 eg:   
      'jia'.字符串内置方法    

二、内置方法之整型相关操作

1.类型转换(把其他数据类型转换为整型)
  int(其他数据类型)
  浮点型转可以直接转,字符串转的话必须满足内部是纯数字才可以
   eg:
        res = int(12.56)   # 12
        res = int('12.56')  # 字符串中必须纯数字才可以转,不然报错
2.进制数的转换
  十进制转为其他进制:
        print(bin(30))   # 0b11110
        print(oct(20))   # 0o24
        print(hex(30))   # 0x1e
  规律:数字的开头如果是0b则为二进制,0o为八进制,0x为十六进制
  其他进制转为十进制:
        print(bin(0b11110, 2))   # 30
        print(oct(0o24 ,8))   # 20
        print(hex(0x1e, 16))   # 30
 3.python自身对数字的敏感度较低(精确度低)
    eg:
        l1 = 2.1
        l2 = 2
        print(l1 - l2)  #0.10000000000000009
    如果需要更精准的计算时就需要借助于模块numpy....

三、内置方法之浮点型相关操作

1.类型转换(把其他数据类型转换为浮点型)
  float(其他数据类型)
  eg:
     res = float('11.2.3')
     print(res)      # 报错
  字符串里面可以允许出现一个小数点(不能两个小数点),其他必须是数字
2.python自身对数字的敏感度较低(精确度低)
eg:
    a = [100.7, 100.9]
    print(sum(a))    # 201.60000000000002

四、内置方法之字符串相关操作

1.类型转换

str(其他数据类型)
可以转任意数据类型,主要在前后加引号就好了
eg:
        res1 = str(99)
        print(res1,type(res1))    # 99 <class 'str'>
        res2 = str('hell0')
        print(res2,type(res2))    # hell0 <class 'str'>
        res3 = str([1,2,3])
        print(res3,type(res3))    # [1, 2, 3] <class 'str'>
        res4 = str({'username':'jia'})
        print(res4,type(res4))    # {'username': 'jia'} <class 'str'>

2.字符串内置方法必须掌握的方法

  • 索引取值

    索引取值(起始位置0开始,超出范围直接报错)
    s1 = 'hello word'
    print(s1[0])   # h
    print(s1[-1])  # d  负数的话就是从末尾开始
    
  • 切片操作

    eg:
        print(s1[1:4])  # ell
        print(s1[-4:-1])  # wor  默认切片的顺序是从左往右的
    
  • 修改切片方向(间隔)

    eg:
        print(s1[1:5:2])  # el          不做要求的话间隔,步长默认是1
        print(s1[-1:-5:-1])  # drow     -1从右往左索引
        print(s1[:])  # hello word      不写数字就是默认都要
        print(s1[2:])  # llo word        从索引2开始往后都要
        print(s1[:5])  # hello           从索引0开始要到索引4
        print(s1[::2])  # hlowr          全都要,间隔一个数
    
  • 统计字符串中字符的个数

    eg:
        print(len(s1))  # 10
    
  • 移除字符串首尾指定的字符

    .strip()方法:默认移除字符串首尾的空格
    eg1:
        res = 'jia '
        print(len(res))           # 4
        print(len(res.strip()))   # 3
     eg2:
        res1 = '$$jia$$'
        print(res1.strip('$'))    # jia  移除字符串首尾指定的字符
        print(res1.lstrip('$'))    # jia$$  移除字符串左边指定的字符
        print(res1.rstrip('$'))    # $$jia  移除字符串右边指定的字符
        只能移除首尾的指定字符,中间的移不了
     eg3:
        username = input('username>>').strip()
        if username == 'jia':
            print('登录成功')      
        先获取用户输入的数据值,然后将首尾空格移除掉,再绑定给变量名
    
  • 切割字符串中指定的字符

    .split()方法:切割字符串中指定的字符
    eg:
        res = 'jason|123|read'
        print(res.split('|'))	# ['jason', '123', 'read']	处理结果是个列表
        print(res.split('|', maxsplit=1))  # ['jason', '123|read']  从左往右切指定个数
        print(res.rsplit('|', maxsplit=1))  # ['jason', '123|read']  从右往左切指定个数
    
  • 字符串格式化输出

    format用法1:(等价于占位符)
     eg:
        res = 'name is {} age is {}'.format('jia', 123)
        print(res)     # name is jia age is 123
    format用法2:(索引取值,并支持重复使用)
     eg:
         res = 'name is {0} age is {1} {0}'.format('jia', 123)
         print(res)
     format用法3:(占位符:见名知意)
      eg:
         res = 'name is {name1} age is {age1}'.format(name1='jia', age1=123)
         print(res)
     format用法4:(推荐)
       eg:
        name = input('username>>')
        age = input('age>>')
        res = f'my name is {name} my age is {age}'
        print(res)
    

3.字符串内置方法必须了解的方法

  • 大小写相关

    .upper() 统一转为大写
    .lower() 统一转为小写
    eg:
         res = 'hElLO WorlD'
         print(res.upper())  # HELLO WORLD 
         print(res.lower())  # hello world 
    
  • 判断字符中是否是纯数字

    .isdigit() 判断字符里面是否是纯数字
    eg:
        guess_age = input('guess_age>>>:').strip()
        if guess_age.isdigit():
            guess_age = int(guess_age)
        else:
            print('输的不对')
    
  • 替换字符串中指定内容

    .replace() 替换指定内容
    eg:
        guess_age = input('guess_age>>>:').strip()
        if guess_age.isdigit():
            guess_age = int(guess_age)
        else:
            print('年龄都不知道怎么输吗???')
    
  • 字符串的拼接

    .join() 拼接字符串
    eg:
    	print('|'.join(['jason', 123]))  # 参与拼接的数据值必须都是字符串
    
  • 统计字符出现的次数

    .count()统计字符出现的次数
    eg:
        res = 'hello world'
        print(res.count('l'))
    
  • 判断字符串的开头或者结尾

    eg:
        res = 'jason say hello'
        print(res.startswith('jason'))
        print(res.endswith('o'))
    
  • 其他方法

    .title()  # 所有首字母大写
    .capitalize()  # 第一个的首字母大写
    .swapcase()   # 大写变为小写,小写变为大写,大小写转换
    .index()  # 索引
    .find()  # 查找
    

五、内置方法之列表相关操作

l1 = [11, 22, 33, 44, 55, 77]
1.索引取值
 eg: 
    print(l1[-1])  # 77
2.切片操作
  eg:
     print(l1[0:5])  # [11, 22, 33, 44, 55]
3.间隔数
  eg:
     print(l1[::-1])   # [77, 55, 44, 33, 22, 11]
4.统计列表中的数据值个数
  eg:
      print(len(l1))   # 6
5.数据值修改
  eg:
        l1[0] = 99
        print(l1)     # [99, 22, 33, 44, 55, 77]
 6.列表中添加数据值
    (1).append()   # 尾部追加数据值
    	eg: l1.append('数据')
    (2).insert()   # 任意位置插入数据值
    	eg: l1.insert(1, [11, 33])
    (3)+号        # 扩展列表 合并列表
    	eg: 
            l2 = [2, 4]  
            print(l1 + l2)  # [11, 22, 33, 44, 55, 77, 2, 4]
    (4).extend()   # 相当于for循环加append
        eg:  
            l1.extend(l2)  
            print(l1)  # [11, 22, 33, 44, 55, 77, 2, 4]
         相当于:
           for i in l2:
                l1.append(l2)
            print(l1)
7.删除列表数据
    (1)del  通用删除关键字del
        eg: 
            del l1[0]   
            print(l1)
    (2) remove  彻底删除数据值
         eg:
             l1.remove(22)
             print(l1)
    (3)pop  尾部弹出数据值,并没有真正删除数据
         eg:
             l1.pop(33)
             print(l1)
8.排序
     (1) .sort()就是升序
       eg:
        s1 = [33, 44, 66, 88, 21, 12]
        s1.sort()
        print(s1)    # [12, 21, 33, 44, 66, 88]
    (2) 降序  加一个参数,将其设为True,就是降序了
       eg:
        s1 = [33, 44, 66, 88, 21, 12]
        s1.sort(reverse=True)
        print(s1)     # [88, 66, 44, 33, 21, 12]
9. 统计列表中某个数据出现的次数
    eg:
      print(l1.count(22))
10.颠倒列表顺序
   eg:
      l1.reverse()
      print(l1)

img

六、可变类型与不可变类型

eg:
    s1 = '$$jia$$'
    s1.strip('$')
    print(s1)       # $$jia$$
注:字符串在调用内置方法之后不会修改自己,而是产生了一个新的结果
 eg:
    l1 = [11, 22, 33, 44]
    l1.append(33)
    print(l1)       # [11, 22, 33, 44, 33]
 注:列表在调用内置方法之后修改的就是自身,并没有产生一个新的结果
可变类型:值改变,内存地址不变
 eg:
    l1 = [11, 22, 33, 44]
    print(l1)       # [11, 22, 33, 44]
    print(id(l1))   # 1643060049856
    l1.append(44)
    print(l1)       # [11, 22, 33, 44, 44]
    print(id(l1))   # 1643060049856
不可变类型:值改变,内存地址肯定变
 eg:
    res = '$$hello world$$'
    print(res)     # $$hello world$$
    print(id(res)) # 1689900415664
    res.strip('$')
    print(res)     # $$hello world$$
    print(id(res)) # 1689900415664
  字符串不支持修改,要想值改变,就得程序赋值
可变类型:集合,列表,字典
不可变类型:整型,字符串,元组,

七、作业

1.基于字符串充当数据库完成用户登录(基础练习)
   data_source = 'jason|123'  # 一个用户数据
   获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
解答:
    data_source = 'jason|123'
    data = data_source.split('|')
    username = input('username>>')
    password = input('password>>')
    if username == data[0] and password == data[1]:
        print('登录成功')
    else:
        print('用户名或者密码有误')
2.基于列表充当数据库完成用户登录(拔高练习)  # 多个用户数据
   data_source = ['jason|123', 'kevin|321','oscar|222']
解答:
    data_source = ['jason|123', 'kevin|321', 'oscar|222']
    username = input('username>>')
    password = input('password>>')
    # data_source = str(data_source)
    for i in data_source:
        data = i.split('|')
        user = data[0]
        pwd = data[1]
        if username == user and password == pwd:
            print('登录成功')
            break
    else:
        print('用户名或者密码有误')
posted @ 2022-09-29 21:45  小王应该在学习!  阅读(66)  评论(0编辑  收藏  举报