• PYTHON_DAY2


    目录

    • 进制
    • 基本数据类型
    1. str 字符串
    2. int 整数
    3. bool 布尔值
    4. list 列表
    5. tuple 元组
    6. dict 字典
    7. set 集合
    • range and enumrate

    一 . 进制

     0 1010010100101001
    1位
    01010010 100101001
    1字节
    01010010 01010010 +
    unicode

    UTF-8: 自己对应关系
    李 01010010 01010010 01010010

    GBK: 自己对应关系
    李 11010010 01110011

    ====》
    二进制:0 1 10 11 100 101
    八进制:0 1 2 3 4 5 6 7 10
    十进制:0 1 2 3 4 5 6 7 8 9 10 .. 15
    十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F 10
    总结:
       1. 硬盘上保存数据: 01010101010101010101

       2. 读取:01010101010101010101 -> 对应的编码的汉字 --> xx
        3. 看到:
    - 转换完成的字符串
    - 以十六进制展示的01010101

    二 . 基本数据类型

    1. str 字符串
     字符串的功能有很多,下面让我们列举我们经常用到的这些功能:
    name = 'alex' # str类的对象
    # 1. capitalize 字符串首字母大写,自身不变,会生成一个新的值
    v = name.capitalize() # 自动找到name关联的str类,执行其中的capitalize技能
    print(name)
    print(v)
    
    # 2. 将所有大写变小写,casefold 更强大支持多国语言 优先于lower
    name = 'AleX'
    v = name.casefold()
    print(name)
    print(v)
    
    # 3. 将所有大小变小写 只支持英文
    name = 'AleX'
    v = name.lower()
    print(v)
    
    # 4. 文本居中
    # 参数1: 表示总长度
    # 参数2:空白处填充的字符(长度为1)
    name = 'str 字符串'
    v = name.center(50,'*')
    print(v)
    # 结果:
    ########### str 字符串 #############
    
    # 5. 表示传入之在字符串中出现的次数
    # 参数1: 要查找的值(子序列)
    # 参数2: 起始位置(索引)
    # 参数3: 结束位置(索引)
    name = "alexasdfdsafsdfasdfaaaaaaaa"
    v = name.count('a')
    print(v)
    
    v = name.count('df')
    print(v)
    
    v = name.count('df',12)
    print(v)
    
    v = name.count('df',0,15)
    print(v)
    
    # 6. 是否以xx结尾
    name = 'alex'
    v1 = name.endswith('ex')
    print(v1)
    
    # 7. 是否以xx开头
    name = 'alex'
    v2 = name.startswith('al')
    print(v2)
    
    # 8. encode     **** 转换成字节 ****
    name = "李杰"
    v1 = name.encode(encoding='utf-8') # 3个字节 表示一个汉字
    print(v1)   # 输出十六进制
    v2 = name.encode(encoding='gbk') # 2个字节 表示一个汉字
    print(v2)
    
    # 9. 找到制表符\t,进行替换(包含前面的值)
    # PS: \n
    name = "al\te\tx\nalex\tuu\tkkk"
    v = name.expandtabs(20)     #20个空格
    print(v)
    
    # 10. 找到指定子序列的索引位置:不存在返回-1
    name = 'alex'
    v = name.find('o')
    print(v)
    v = name.index('o')  # index 不存在则会报错,所以我在写代码是尽量优先使用find
    print(v)
    
    # 11.字符串格式化
    
    tpl = "我是:%s;年龄:%s;性别:%s"%('李杰',18,'不清楚')
    
    tp2 = "我是:{0};年龄:{1};性别:{2}"    # 传入索引对应值
    v = tpl.format("李杰",19,'都行')
    print(v)
    
    tp3 = "我是:{name};年龄:{age};性别:{gender}"  # 传入k对应值
    v = tpl.format(name='李杰',age=19,gender='随意')
    print(v)
    
    tp4 = "我是:{name};年龄:{age};性别:{gender}"  # 传入整个字典
    v = tpl.format_map({'name':"李杰",'age':19,'gender':'中'})
    print(v)
    
    
    # 12. 是否是数字、汉字
    name  = 'alex8汉字'
    v = name.isalnum() # 字,数字
    print(v)    # True
    v2 = name.isalpha()
    print(v2)   # False
    
    # 13. 判断是否是数字
    num = '②'
    v1 = num.isdecimal() # '123'
    v2 = num.isdigit()   # '123','②'
    v3 = num.isnumeric() # '123','二','②'
    print(v1,v2,v3)
    
    
    # 14. 是否是表示符
    n = 'name'
    v = n.isidentifier()
    print(v)
    
    # 15.是否全部是小写
    name = "ALEX"
    v = name.islower()
    print(v)
    v = name.isupper()  # 是否大写
    print(v)
    
    # 16.全部变大写
    name = 'alex'
    v = name.upper()  # 对应全变小写 lower()
    print(v)
    
    # 17.是否包含隐含的符号
    name = "钓鱼要钓刀鱼,\n刀鱼要到岛上钓"
    v = name.isprintable()
    print(v)
    
    
    # 18.是否全部是空格
    name = '    '
    v = name.isspace()
    print(v)
    
    
    
    # 19.元素拼接(元素字符串)
    name = 'alex'
    
    v = "_".join(name) # 内部循环每个元素
    print(v)
    
    name_list = ['海峰','杠娘','李杰','李泉']
    v = "搞".join(name_list)
    print(v)
    
    # 20. 左右填充
    #   center,rjust,ljust
    name = 'alex'
    v = name.rjust(20,'*')
    print(v)
    
    
    # 21. 对应关系 + 翻译
    m = str.maketrans('aeiou','12345') # 对应关系a-1 ,e-2...
    
    name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
    v = name.translate(m)
    print(v)
    
    # 22. 分割,保留分割的元素
    content = "李泉SB刘康SB刘一"
    v = content.partition('SB')
    print(v)
    # 输出:('李泉', 'SB', '刘康SB刘一')
    
    # 23. 替换
    content = "李泉SB刘康SB刘浩SB刘一"
    v = content.replace('SB','Love')
    print(v)
    v = content.replace('SB','Love',1)
    print(v)
    
    # 24,移除空白,\n,\t,自定义
    name = 'alex\t'
    v = name.strip() # 空白,\n,\t
    print(v)
    
    # 25. 大小写转换
    name = "Alex"
    v = name.swapcase()
    print(v)
    
    # 26. 填充0 默认从左开始
    name = "alex"
    v = name.zfill(20)
    print(v)
    

      

    # 字符串功能总结:
    name = 'alex'
    name.upper()
    name.lower()
    name.split()
    name.find()
    name.strip()
    name.startswith() # 以XX开头
    name.format()    # 格式化
    name.replace()
    "alex".join(["aa",'bb'])
    # 额外功能:
    name = "alex"
    name[0] 索引取值
    name[0:3] 范围取值
    name[0:3:2] 步长取值
    len(name) 测长度
    for循环,每个元素是字符

      2. int 整型

    # 1. 当前整数的二进制表示,最少位数
    age = 4 # 100
    print(age.bit_length())

    # 2. 获取当前数据的字节表示
    age = 15
    v = age.to_bytes(10,byteorder='big')
    print(v)
    # 输出:b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f'
    v = age.to_bytes(10,byteorder='little')
    print(v)
    # 输出:b'\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'

        3. bool 布尔值

        v = 0 # 1,-1
    bool(0) --> False
    v = ""
    bool("") --> False
    v = []
    bool([]) --> False
    v = 1 / -1
    bool(-1) --> True
    # 总结:0 and 空内容:False 

    4. list 列表
     
    # 1.追加
    user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
    user_list.append('刘铭')
    print(user_list)
    
    # 2. 清空
    user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
    user_list.clear()
    print(user_list)
    
    # 3. 拷贝(浅拷贝)
    user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
    v = user_list.copy()
    print(v)
    print(user_list)
    
    # 4. 计数
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    v = user_list.count('李泉')
    print(v)
    
    # 5. 扩展原列表
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    user_list.extend(['郭少龙','郭少霞'])
    print(user_list)
    
    # 6. 查找元素索引,没有报错
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    v = user_list.index('李海')
    print(v)
    
    # 7. 删除并且获取元素 - 索引
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    v = user_list.pop(1)
    print(v)
    print(user_list)
    
    # 8. 删除 - 值
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    user_list.remove('刘一')
    print(user_list)
    
    # 9. 翻转
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    user_list.reverse()
    print(user_list)
    
    # 10. 排序: 欠参数
    nums = [11,22,3,3,9,88]
    
    # 排序,从小到大
    nums.sort()
    print(nums)
    
    # 从大到小
    nums.sort(reverse=True)
    print(nums)
    

      

    ##### 额外功能:

    # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
    # user_list[0]
    # user_list[1:5:2]
    # del user_list[3]
    # for i in user_list:
    # print(i)
    # user_list[1] = '姜日天'
    # user_list = ['李泉','刘一','李泉','刘康','豆豆',['日天','日地','泰迪'],'小龙'] # 可以嵌套[] 、{}

     
     5.tuple 元组 
    user_tuple = ('alex','eric','seven','alex')
    # 1. 获取个数
    v = user_tuple.count('alex')
    print(v)
    # 2.获取值的第一个索引位置
    v = user_tuple.index('alex')
    print(v)

    ####### 额外功能:
    # user_tuple = ('alex','eric','seven','alex')
    # for i in user_tuple:
    # print(i)

    # v = user_tuple[0]

    # v = user_tuple[0:2]
    # print(v)

    # user_tuple = ('alex','eric','seven',['陈涛','刘浩','赵芬芬'],'alex')
    # user_tuple[0] = 123 x
    # user_tuple[3] = [11,22,33] x
    # user_tuple[3][1] = '刘一'
    # print(user_tuple)

    # li = ['陈涛','刘浩',('alex','eric','seven'),'赵芬芬']
    # ****** 元组最后,加逗号 ****** 五星重点
    # li = ('alex',)
    # print(li)

      6. dict 字典 

    # 1. 清空、
    dic = {'k1':'v1','k2':'v2'}
    dic.clear()
    print(dic)
    
    # 2. 浅拷贝
    dic = {'k1':'v1','k2':'v2'}
    v = dic.copy()
    print(v)
    
    # 3. 根据key获取指定的value;不存在不报错
    dic = {'k1':'v1','k2':'v2'}
    v = dic.get('k1111',1111)
    print(v)
    v = dic['k1111']
    print(v)
    
    # 4. 删除并获取对应的value值
    dic = {'k1':'v1','k2':'v2'}
    v = dic.pop('k1')
    print(dic)
    print(v)
    
    # 5. 随机删除键值对,并获取到删除的键值
    dic = {'k1':'v1','k2':'v2'}
    v = dic.popitem()
    print(dic)
    print(v)
    
    k,v = dic.popitem() # ('k2', 'v2')
    print(dic)
    print(k,v)
    
    v = dic.popitem() # ('k2', 'v2')
    print(dic)
    print(v[0],v[1])
    
    # 6. 增加,如果存在则不做操作
    dic = {'k1':'v1','k2':'v2'}
    dic.setdefault('k3','v3')
    print(dic)
    dic.setdefault('k1','1111111')
    print(dic)
    
    # 7. 批量增加或修改
    dic = {'k1':'v1','k2':'v2'}
    dic.update({'k3':'v3','k1':'v24'})
    print(dic)
    
    dic = dict.fromkeys(['k1','k2','k3'],123)
    print(dic)
    dic = dict.fromkeys(['k1','k2','k3'],123)
    dic['k1'] = 'asdfjasldkf'
    print(dic)
    
    dic = dict.fromkeys(['k1','k2','k3'],[1,])
    {
       k1: 123123213, # [1,2]
       k2: 123123213, # [1,]
       k3: 123123213, # [1,]
    }
    dic['k1'].append(222)
    print(dic)
    

      

    # ########## 额外功能:
    # - 字典可以嵌套
    # - 字典key: 必须是不可变类型
    # dic = {
    # 'k1': 'v1',
    # 'k2': [1,2,3,],
    # (1,2): 'lllll',
    # 1: 'fffffffff',
    # 111: 'asdf',
    # }
    # print(dic)
    # key:
    # - 不可变
    # - True,1

    # dic = {'k1':'v1'}
    # del dic['k1']

      7. set集合
    s1 = {"alex",'eric','tony','李泉','李泉11'}
    s2 = {"alex",'eric','tony','刘一'}
    
    # 1.s1中存在,s2中不存在
    v = s1.difference(s2)
    print(v)
    # #### s1中存在,s2中不存在,然后对s1清空,然后在重新复制
    s1.difference_update(s2)
    print(s1)
    
    # 2.s2中存在,s1中不存在
    v = s2.difference(s1)
    print(v)
    
    # 3.s2中存在,s1中不存在
    # s1中存在,s2中不存在
    v = s1.symmetric_difference(s2)
    print(v)
    
    # 4. 交集
    v = s1.intersection(s2)
    print(v)
    
    # 5. 并集
    v = s1.union(s2)
    print(v)
    
    # 6. 移除
    s1 = {"alex",'eric','tony','李泉','李泉11'}
    s1.discard('alex')
    print(s1)
    
    s1 = {"alex",'eric','tony','李泉','李泉11'}
    s1.update({'alex','123123','fff'})
    print(s1)
    

      

    # ##### 额外功能:

    # s1 = {"alex",'eric','tony','李泉','李泉11'}
    # for i in s1:
    # print(i)

    # s1 = {"alex",'eric','tony','李泉','李泉11',(11,22,33)}
    # for i in s1:
    # print(i)


     三 . range and enumrate

    # 1. 请输出1-10
    range(1,11) # 生成 1,23,,4,56.10

    # 不会立即生成,只有循环迭代时,才一个一个生成
    for i in range(1,11): #
    print(i)

    for i in range(1,11,2): #
    print(i)

    for i in range(10,0,-1): #
    print(i)

    # 1. 不会立生成,迭代之后才一个一个创建;
    """
    - 2.7:
    range()
    xrange() 不会立即生成,迭代之后才一个一个创建;
    - 3.x
    range() 不会立即生成,迭代之后才一个一个创建;
    """
    # 2. range: 三个参数

    li = ['eric','alex','tony']
    # range,len,li循环
    for i in range(0,len(li)):
    ele = li[i]
    print(ele)


    li = ['eric','alex','tony']
    for i in li:
    print(i)

    for i in range(0,len(li)):
    print(i+1,li[i])


    # enumerate额外生成一列有序的数字

    li = ['eric','alex','tony']
    for i,ele in enumerate(li,1):
    print(i,ele)

    v = input('请输入商品序号:')
    v = int(v)
    item = li[v-1] # 索引是从零开始的 所以-1
    print(item)
  • 相关阅读:
    “百度杯”CTF比赛 九月场 code
    初识thinkphp(3)
    i春秋CTF web题(1)
    初识thinkphp(2)
    初识thinkphp(1)
    0MQ底层队列设计
    0MQ文档导读
    LF模式是个坑,ZeroIce中间件让你体会这个痛
    0xe7f001f0!?NDK调试过程,无故抛出SIGSEGV。
    KDevelop
  • 原文地址:https://www.cnblogs.com/lipingzong/p/6827998.html
Copyright © 2020-2023  润新知