• pyhton内置的数据类型(二)


    一、内置数据类型的解释创建及赋值

    pycharm的常用快捷键:
    ”ctrl +d 复制一整行“ ;
    “按住ctrl 鼠标移动到查看的方法(endswith)位置,点击即可, 快速查看方法的源代码和解释说明

    数据类型描述赋值小小提示
    字符串 str用单引号 ’ ’ ,双引号 " “,三引号 “”” “”"引起来的字符信息str1=‘hello1’; str2=“hell2”;str3=“”“hello3"”"
    数组 array存储同种数据类型的数据结构arr1=[1,2,3] ,arr2=[1.1, 2.2, 3.3]
    列表 list打了激素的数组, 可以存储不同数据类型的数据结构list1=[1, 2.1, “hello”, Ture, 2e+5, [1,2,3] ]
    元组 tuple带了颈箍咒的列表,和列表的唯一区别是不能增删改t1=(1, 2.4,True,2e+5,[1,2,3]) ; t2 = ( 1, )如果元组只有一个元素,一定要加逗号
    集合 set不重复且无序的set1={1,2,3};ste2={3,4} ;print(“交集:” set1 & set2, “并集:” set1 | set2)交集 &,并集 |
    字典 dict{“key” : “value”},键值对,通过key可以快速的找到value值user ={“name”:‘aaa’, ‘age’ : 10 } ;print(user[‘name’])

    二、表示转义的符号

    转义字符名称功能
    \a响铃用于输出响铃
    \b退格(Backspace键)用于退回一个字符
    \f换页用于输出
    \n换行符用于输出
    \r回车符用于输出
    \t水平制表符(Tab键)用于输出
    \v纵向制表符用于制表
    \\反斜杠字符用于表示一个反斜杠字符
    \’单引号用于表示一个单引号字符
    \"双引号用于表示一个双引号字符
    \dddddd是ASCII码的八进制值,最多三位用于表示该ASCII码代表的字符
    \xhh或\Xhhhh是ASCII码的十六进制值,最多两位用于表示该ASCII码代表最多两位的字符
    实例操作
    #转义字符:  \n 换行
    >>> s ="hello\nweerre"
    >>> print(s)
    hello
    weerre
    
    #转义字符:  \t 相当于tap键
    >>> s ="hello\tweerre"
    >>> print(s)
    hello   weerre
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    二、字符串的基本特性

    pycharm常用快捷键:格式化代码符合PEP8编码风格(Ctrl + Alt + L)

    1.连接操作符 “ + ” ,提示:必须是同一数据类型才能相加
    >>> name = 'aaa'
    >>> print("hello " + name )
    hello aaa
    
    • 1
    • 2
    • 3
    2. 重复操作符 “ * ”
    >>> print("*" * 10 + '学生管理系统' + "*"*10)
    **********学生管理系统**********
    
    • 1
    • 2
    3.成员操作符 “ in ”
    >>> s = 'linlin linyx'
    >>> print('linyx' in s)
    True
    >>> print('linyx' not in s)
    False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4. 正向索引和反向索引

    获取特定偏移的元素,0,1,2,3,4

    >>> s="WESTOS"
    >>> print(s[0])
    W
    >>> print(s[3])
    T
    >>> print(s[-2])
    O
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    5. 切片
    回顾旧知识:
    	range(3): [0,1,2]
    	range(1,4): [1,2,3]
    	range(1,6,2):[1,3,5]
    
    • 1
    • 2
    • 3
    • 4
    (1)切片的用法:切除一部分的内容
    • s[start: end:steep]
    • s[:end]:
    • s[start:]:
    (2)切片用法练习
    s = 'hello,westos'
    >>> print(s[1:3])
    el
    >>> print(s[:3])
    hel
    >>> print(s[:5])  # 总结:s[:n] 是指拿出前n个元素
    hello
    >>> print(s[3:])  # 总结: s[n:] 是指除了前n个元素,其他元素保留
    lo,westos
    >>> print(s[:])   #总结: 拷贝字符串,从头开始访问一直到字符串结束的位置
    hello,westos
    >>> print(s[::-1])   #总结: 倒序输出
    sotsew,olleh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    6. for循环访问
    s='westos'
    count =0
    for item in s:
    	count += 1
    	print(f"第{count}个字符:{item}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    7. 练习题

    用户输入一个字符串,判断该字符串是否为回文字符串,例: ”aba“ ,"abba"都是回文字符串

    方法一:
    s=input("请输入字符串:")
    s1 = s[::-1]
    if s1 == s:
    	print(f"{s}字符串是回文字符串")
    else:
    	print(f"{s}字符串不是回文字符串")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    方法二:
    s = input('输入字符串:')
    result = ”回文字符串“  if  s == s[::-1] else "不是回文字符串"               #三元运算符
    print(s + "是" + result)
    #print(”回文字符串“  if  s == s[::-1] else "不是回文字符串")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三. 字符串的内建方法

    在这里插入图片描述

    1. 字符串的判断和转换
    (1)字符串类型的判断,是否是字母或数字或大写…
    s = 'HelloWESTOS'
    print(s.isalnum())   #True    是否是数字或者字母
    print(s.isdigit())   #False   是否是数字
    print(s.isupper())   #False   是否是大写字母
    
    • 1
    • 2
    • 3
    • 4
    (2)类型的转换,大转小写,小写转大…
    >>> print("hello".upper())      	 	 #转换成大写
    HELLO
    >>> print("hello".lower())      	 	 #转换成小写
    hello
    >>> print("HellO WORld ".title())      	 #转换成标题
    Hello World
    >>> print("HellO WORld ".capitalize())   #转换成首字母大写
    Hello world
    >>> print("HellO WORld ".swapcase())     #大写换小写,小写换大写
    hELLo worLD
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    (3)使用场景

    需求:用户输入Y或者y都继续运行代码,yum install httpd

    思路:
    choice = input("请问是否继续安装(Y|y)")
    if  choice.lower() == 'y':
    	print("程序正在安装......")
    
    • 1
    • 2
    • 3
    • 4
    2. 字符串的开头和结尾匹配
    (1)判断字符串的开头(startswith)
    • 常用场景: 判断url是不是网址,http开头的网址
    实例:
    url = 'http://www.baidu.com'
    if url.startswith('http'):
    	#具体实现爬虫,感兴趣的话可以看request模块
    	print(f'{url}'是一个正确的网址,可以爬取网站的代码)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    (2)判断字符串的结尾(endswith)
    • 常用场景: 判断文件的类型
    实例: 
    filename = ‘hello.png’
    if 	filename.endswith('.png'):
    	print(f'{filename}是图片文件')
    elif  filename.endswith('.mp3'):
    	print(f'{filename}是音乐文件')
    else:
    	print(f'{filename}是未知文件')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3. 字符串的数字清洗,删除空格或替换
    方法解释说明
    strip删除字符串开头和末尾的空格(指广义的空格: \n , \t ,' ' )
    lstrip删除字符串开头的空格(指广义的空格: \n , \t ,' ' )
    rstrip删除字符串末尾的空格(指广义的空格: \n , \t ,' ' )
    replace字符串替换。删除中间的空格,将空格替换为空
    练习:
    >>> "    hello   ".strip()
    'hello'
    >>> "    hello   ".lstrip()
    'hello   '
    >>> "    hello   ".rstrip()
    '    hello'
    >>> "    he   llo   ".replace(" ","")
    'hello'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    4. 字符串的位置调整,剧中或偏左或偏右…
    方法解释说明
    center(width)字符串居中且长度为指定宽度
    ljust(width)字符串左对齐且长度为指定宽度
    rjust(width)字符串右对齐且长度为指定宽度
    练习:
    >>> "学生管理系统".center(50)
    '                      学生管理系统                      '
    >>> "学生管理系统".center(50,"*")
    '**********************学生管理系统**********************'
    >>> "学生管理系统".ljust(50,"-")
    '学生管理系统--------------------------------------------'
    >>> "学生管理系统".rjust(50,"-")
    '--------------------------------------------学生管理系统'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    5. 字符串的搜索和统计,查找某字符出现的次数及位置…
    方法解释说明
    find(str,beg,end)检测str 是否包含在string中,返回str开始的索引位置。否则返回-1
    index(str,beg,end)检测str 是否包含在string中,返回str开始的索引位置,否则报错(抛出异常)
    count(str,beg,end)检测str 在string中出现的次数
    >>> s = "hello westos"
    >>> s.find("llo")
    2
    >>> s.index("llo")
    2
    >>> s.count("l")
    2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    6. 字符串的分离与拼接
    方法说明
    split(str=“”)以str为分隔符切片string,默认是空格
    splitlines()以 为分隔符切片string
    join以什么为连接符将多个字符串拼接成一个字符串
    (1)需求:判断ip地址的合法性
    ,将ip的每一位数字拿出,判断每位数字是否在0-255之间
    ip ='17.25.254.100'
    >>> ip.split('.')
    ['17', '25', '254', '100']
    >>> items = ip.split('.')
    >>> items
    ['17', '25', '254', '100']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    (2)需求:将四个数字用‘ - ’拼接起来
    ip ='17.25.254.100'
    >>> ip.split('.')
    ['17', '25', '254', '100']
    >>> items = ip.split('.')
    >>> items
    ['17', '25', '254', '100']
    >>> "-".join(items)    #join拼接
    '17-25-254-100'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    7. 练习

    在这里插入图片描述

    str = input("请输入正确的IP地址: ")
    num = str.split(".")
    for i in num:
        if  i.isdigit() == True:
            if i.startswith('0'):
                print("Nerither")
                break
            else:
                print("IPV4")
        else:
            print("ipv4地址格式错误")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    8. string模块
    例子: 随机生成验证码

    需求:生成100个验证码:每个验证码由2个数字和2个字母组成

    import random  #从某一数字中拿出一个来randmon.randint();随机拿出多个:random.sample
    import string
    print("从数列里面随机拿出: " + string.digits)
    print("从字母列表里面随机拿出: " + string.ascii_letters)
    for i in range(0,100):
    print(str(i) + "随机生成的字符串: " + "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4)))
    
    #运行结果
    从数列里面随机拿出: 0123456789
    从字母列表里面随机拿出: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    1随机生成的字符串: 45lktg
    2随机生成的字符串: 57zdrX
    3随机生成的字符串:........
    .......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    练习1

    在这里插入图片描述

    练习2

    在这里插入图片描述

    练习3

    在这里插入图片描述

  • 相关阅读:
    Unity --- 视频播放与角色控制器
    SpringWeb(SpringMVC)
    GoF23 观察者模式
    【C++】简单理解模板 函数模板 类模板
    Python lambda 函数深度总结
    Spring3新特性:graalvm打包Springboot+Mybatis
    Spring Boot 5 创建个人中心页面(API+Vue)
    Vue | Vue.js 全家桶 Vuex状态管理
    【项目总结】C++ 云盘
    SpringBoot 请求参数解析全过程
  • 原文地址:https://blog.csdn.net/weixin_45760327/article/details/132674782