当前位置:网站首页>数据类型的内置方法

数据类型的内置方法

2022-06-25 15:33:00 橘子甜了吧

昨日内容回顾

  1. 循环结构之for循还

    for 变量名 in 迭代对象
    	循环体
    

    迭代对象可以是字符串、列表、字典、元组、集合,其中列表、元组和集合用法一致

    字符串是按照单个字符依次取值输出

    列表是按照一个数据值依次取值输出

    字典只能取到k值,它的v值不展示

  2. range

    for 变量名 in range()
    	循环体
    

    第一种是range(数值一)

    ​ 循环遍历的结果是从0开始到总和个数-1

    第二种是range(数值一,数值二)

    ​ 第一个数值指的是起始位置,第二个数值指的是终止位置,这个情况可以简述为“顾头不顾尾”

    第三种是range(数值一,数值二,数值三)

    ​ 在第二种的基础上多增加了一个数值,这个数值叫做间隔数,就是隔几个数取值,也可看做我们数学里学的等差数列

  3. range的实际案例

    网络爬虫:python代码模拟网络数据请求获取数据

    找到网址的规律,只需要用到for循环再加上占位符简单的网络爬虫就可以实现了

  4. for+break

    break是终止循环

  5. for+continue

    continue是跳出此次循环,继续下次循环

  6. for+else

    在循环结束以后,正常输出,与for同级

今日学习内容

  1. 数据类型的内置方法简介

    概念:每一种数据类型自带的功能

    数据类型.方法名()

    使用数据类型的内置方法统一采用句点符,因有些数据类型的内置方法太多,可以记个大致记到眼熟,在使用的时候通过自动提示找到自己的想要的功能

  2. 整型相关方法

    • 关键字:int()

    • 内置方法:没有,整型就是整数,主要就是用来计算的,所以没什么内置方法

    • 类型转换:必须符合内部都是纯数字的情况,int(需要转化的内容)

    print(type(int('12345678')))  # 字符串内部是纯数字情况可以转换
    print(type(int('1nuuuuuh46781')))  # 字符串里面必须是纯数字才可以转换
    print(type(int('67567.33')))  # 小数点也算一个字符,所以也不可以
    
    • 进制的转换:

      二进制 八进制 十进制 十六进制,我们日常生活中用的是十进制

      • 十进制转换其他进制

        bin() 是将十进制转二进制 0b是二进制数的标识

        print(bin(100))  # 0b1100100
        

        oct() 是将十进制转八进制 0o是八进制数的标识

        print(oct(100))  # 0o144
        

        hex() 是将十进制转十六进制 0x64 0x是十六进制数的标识

        print(hex(100))  # 0x64
        

        如果数字前面没有任何标识,默认就是十进制

      • 其他进制转换十进制

        通过各进制特有的标识,我们就可以是哪个进制转换的十进制,同样我们也可以人为的指定进制数

        print(int(0b1100100))   # 100
        print(int(0o144))       # 100
        print(int(0x64))        # 100
        print(int('0b1100100', 2))  # 100
        print(int('0o144', 8))  # 100
        print(int('0x64', 16))  # 100
        
  3. 浮点型相关方法

    • 关键字:float()

    • 内置方法:没有,主要用于参与数学运算

    • 类型转换:

      争对浮点型的类型转换,它比整型稍微好一点,可以识别一个小数点,但仅限识别一个

      print(float('123'))  # 123.0
      print(type(float('123')))  # float
      print(float('123a123'))
      print(float('123.12'))  # 可以识别一个小数点
      print(float('123.123.1.2.2.2.2.2.2'))  # 不可以
      

      特殊情况:主要针对的是布尔值,False就是0.0,True就是1.0

  4. 补充说明:python对数字不敏感,很容易出错,算着算着可能就会失真,但是它还是可以做许多事情,厉害的不是它本身,是它的一些模块,可以通过模块来修改它的缺点

  5. 字符串相关方法

    • 关键字:str()

    • 内置方法:
      争对字符串的所应取值有索引取值、切片取值、间隔/方向,

      • 索引取值:单个字符 支持负数

        str = 'hello world'
        print(str[0]) # h
        # 支持负数的取法
        print(str[-1])
        

        想取到哪个就可以取到哪个,

      • 切片取值:多个字符

        str = 'hello world'
        print(str[0:4])  # hell
        print(str[-1:-4])  # 取不到值
        print(str[-4:-1])  # orl
        print(str[-1:-4:-1])  # dlr 可以通过第三个参数的正负一 控制方向
        

        其中的数字代表着的是索引,采用的也是'顾头不顾尾'的概念,

        切片的顺序是默认从左向右的,在负向切片的时候需要注意

      • 间隔/方向

        str = 'hello world'
        print(str[:])  # 什么都不写,默认取到所有的
        print(str[::2])  # 表示间隔一个取一个 hlowrd
        print(str[::3])  # 表示间隔俩个取一个 hlwl
        
      • 统计字符串中字符的个数

        print(len(str))  # 11
        

        需要注意的是在字符串中空格也算一个字符,在统计字符串的个数的时候也会把它算在内

      • 移除字符串首尾指导的字符
        .strip()默认移除的是首尾的空格符号,经常会用在我们登录的时候的操作

         name = '  zhang  '
         print(len(name))  # 开始name的字符串长度为 9
         print(name.strip(), len(name.strip()))  # 通过移除后 长度只剩 5
         res = name.strip()
        

        这里需要注意的是它不会改变原来的值,只是重新创建了一个新的数据,如果想要永久的保存这个新的值可以给这个值也绑定一个名字

        .strip('\('))可以用来移除指定的值 .lstrip('\)')) 移除左边的指定的值
        .rstrip('$'))移除右边的指定的值

      • 按照指定的字符切割字符串
        当字符串中出现连续的特征符号,就可以考虑使用字符切割,切割字符串以后结果出现的是一个列表

        info = 'zhan|123|run'
        res = info.split('|')  # 切割字符串之后结果是一个列表
        print(res, type(res))  # ['zhang', '123', 'run'] <class 'list'>
        

        .split('|', maxsplit=1)) 里面的maxsplit表示从左往右 只切一次 ['zhang', '123|run']

        .rsplit('|', maxsplit=1)) 表示从右往右 只切一次 ['zhang|123', 'run']

      • 字符串大小写相关
        .lower() 将字符串里的大写全部转换为小写

        .upper() 将字符串里的大写全部转换为小写
        注意:只是字母之间转换,数字、符号、空格等不能参与转换

        .islower() 判断字符串中所有的字母是否是全小写

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

      • 字符串的格式化输出
        关键词:.format

        方式一:等价于%S占位,前把文本编辑好,需要占位的地方输入{}来展位,可以设置多个占位,然后通过 变量名.format('数据值','数据值'......)

        res1 = 'my name is {} my age is {}'
        print(res1.format('zhangran', 18))
        

        方式二:利用索引值,先用{}进行占位,里面输入索引,然后在使用的时候按照索引顺序输入值,,可以多次使用

        res2 = 'my name is {0} my age is {1} {0} my friends always called me {2}'
        print(res2.format('zhangran', 18, 'zhangxiaoran'))
        

        方式三:支持关键字取值(按k取值),也支持重复使用在{}输入k值,然后在使用的时候输入k值的数据值就可以了

        res3 = '{name} {name} {age} my name is {name} my age is {age}'
        print(res3.format(name='jason', age=18))
        

        方式四:使用变量名,先将数据值绑定给变量,然后在使用的时候直接在{}里输入变量名就可是使用,同样也可以重复多次使用,最推荐使用的方法

         name = 'zhangran'
         age = 18
         print(f'my name is {name} my age is {age} {name} {age}')
        
      • 统计字符串中指定字符出现的次数

        关键字:.count(),底层实现的操作就是使用的是for循环,它内部自己用来比较是否与你输入的一直,然后自己再给累加,得出结果

        str = 'jjsokjflpkfpzfifmcuioijjjALJAGAGAGFETEYEUEJDHDGDGSBSBS'
        print(str.count('j'))  # 6
        print(str.count('GA'))  # 2
        
      • 判断字符串的开头或者结尾

        .startswith 表示的是开头的字符

        .endswith 表示的是结尾的字符

        可以查找的是单个字符,也可以是多个字符,返回的结果是布尔值

        res = 'jason say ha ha ha heiheihei'
        print(res.startswith('jason'))
        print(res.startswith('j'))
        print(res.startswith('b'))
        print(res.endswith('heiheihei'))
        print(res.endswith('hei'))
        print(res.endswith('h'))
        
      • 字符串的替换

        关键字:.replace

        语法结构:变量名.replace('old_str','new_str' ,1),从左到右依次替换,可指定替换的个数

      • 字符串的拼接

        关键字:''.join([]),前面一个字符串,后面跟.join(),join()里面写一个列表、元组,进行字符串拼接,但是列表中的数据必须都是字符串类型

        res1 = 'hello'
        res2 = 'world'
        print(''.join(['hello', 'world', 'hahaha']))  # join方法拼接
        print('|'.join(['hello', 'world', 'hahaha']))  # join方法拼接
        print('$'.join(['jason', 'say', 666]))  # 列表中的数据都必须是字符串类型  报错!!!
        

        字符串支持加号拼接

        res1 = 'hello'
        res2 = 'world'
        print(res1 + res2)
        

        字符串支持乘号重复

        res1 = 'hello'
        res2 = 'world'
        print(res1 * 10)
        
      • 判断字符串中是否是纯数字

        关键词:.isdigit(),返回的是布尔值,判断字符串是不是纯数字,可以使用在登录的情况,可以防止网站崩溃

        print('123'.isdigit())  # True
        print('123a'.isdigit())  # False
        print(''.isdigit())  # False
        
      • 查找某个字符对应的索引值

        res = 'jason say ha ha ha heiheihei'
        

        .index 可以用来查找字符的索引

        .find 也可以用来查找字符的索引

        .index与.find都可以用来查找索引 ,但是在一定范围内查找是否存在字符,前者如果没有则报错,后者没有返回的是-1,-1表示的是没有,报错,没有办法执行

        print(res.find('d',0,5))  # -1
        prnt(res.index('d',0,5))  # 会报错
        
      • 正文相关操作

        .title(),首字母大写

        .capitalize(),只有第一个字母大写

        res = 'my name is zhangran'
        print(res.title())  # My Name Is Zhangran
        print(res.capitalize())  # My name is zhangran
        
    • 类型转换:
      任何数据类型都可以转为字符串型,他只是在最外层加了’‘,它兼容了所有的数据类型

      print(str(12), type(str(12)))  # 12 <class 'str'>
      print(str(123.11), type(str(123.11)))  # 123.11 <class 'str'>
      print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))  # [1, 2, 3, 4] <class 'str'>
      print(str({'name': 'jason'}), type(str({'name': 'jason'})))  # {'name': 'jason'} <class 'str'>
      print(str(True), type(str(True)))   # True <class 'str'>
      print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))  # (1, 2, 3, 4) <class 'str'>
      print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))  # {1, 2, 3, 4} <class 'str'>
      
  6. 列表相关方法

    • 关键字:list()

    • 类型转换:

      整型和浮点型不能直接转为列表,list()其实就是一个for循环,能够被for循环的数据类型都能被转换为列表

    • 内置方法:

      • 索引取值

        str = ['sjkah','jksal','ajshd','kasjhd','aslj','akJSBS']
        print(str[0]) # h
        # 支持负数的取法
        print(str[-1])
        
      • 切片取值

        str = ['sjkah','jksal','ajshd','kasjhd','aslj','akJSBS']
        print(str[0:4])  
        print(str[-1:-4])  
        print(str[-4:-1])  
        print(str[-1:-4:-1])  
        
      • 间隔/方向

        str = ['sjkah','jksal','ajshd','kasjhd','aslj','akJSBS']
        print(str[:])  # 什么都不写,默认取到所有的
        print(str[::2])  # 表示间隔一个取一个
        print(str[::3])  # 表示间隔俩个取一个
        
      • 统计列表中数据的个数

        print(len(str))  # 11
        

课后作业

# 1.基于字符串充当数据库完成用户登录(基础练习)
# 	data_source = 'jason|123'  # 一个用户数据
#   	获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
# 拆分为用户名与密码,按|拆分
data_source = 'jason|123'
res = data_source.split('|')
# print(res)  # ['jason', '123']
data_name = res[0]
data_pwd = res[1]
# print(data_name,data_pwd)
# 用户登录代码
username = input('输入用户名:')
password = input('输入密码:')
"""
1.判断用用户是否输入正确,登录成功与失败
2.判断输入的数据是否为数据库的用户
3.数据库用户的提取
    print(res)  # ['jason', '123']  此时字符串已经被拆分为列表
    data_name = res[0]
    data_pwd = res[1]
"""
if username == data_name and password == data_pwd:
    print('登录成功')
else:
    print('登录失败')

# 2.基于列表充当数据库完成用户登录(拔高练习)  # 多个用户数据
# 	data_source = ['jason|123', 'kevin|321','oscar|222']
data_source2 = ['jason|123', 'kevin|321', 'oscar|222']
# 先取出每个值,然后进行分割
data1 = data_source2[0].split('|')
data2 = data_source2[1].split('|')
data3 = data_source2[2].split('|')
print(data1, data2, data3)  # ['jason', '123'] ['kevin', '321'] ['oscar', '222']
#  分割后进行查找值
data_name1 = data1[0]
data_pwd1 = data1[1]
data_name2 = data2[0]
data_pwd2 = data2[1]
data_name3 = data3[0]
data_pwd3 = data3[1]
# 获取用户输入的数据
# 如果用户名输入的是jason并且密码是123,或者输入的是kevin并且密码是321,或者输入的是oscar并且密码是321,登录成功,否则失败
username = input('输入用户名:')
password = input('输入密码:')
if username == data_name1 and password == data_pwd1:
    print('jason,登录成功')
elif username == data_name2 and password == data_pwd2:
    print('kevin,登录成功')
elif username == data_name3 and password == data_pwd3:
    print('oscar,登录成功')
else:
    print('登录失败')
原网站

版权声明
本文为[橘子甜了吧]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/zxr1002/p/16411503.html