• day6 编码


    01昨日内容回顾

    dict: dic = {'name':'alex'}
    增:dic['age'] = 21 存在就覆盖
    dic.setdefault() 没有就增加
    
    删除:pop()按照key删除,有返回值
        clear
        del dic['name']
        popitem()随机删除 返回的是元祖
    
    改  update
    
    查
    dic.keys()
    dic.values()
    dic.items()
    
    for k,v in dic.items():
        print(k,v)
    
    dic.get(key,None)

     02作业讲解

    # 将所有大于66的值保存到字典的第一个key中,将所有小于66的保存到字典的第二个key中
    # 即:{"k1":大于66的所有值的列表,'k2':小于66的所有值的列表}
    li=[11,22,33,44,55,66,77,88,90]
    k1=[]      #创建一个保存大于66的值空列表
    k2=[]
    dic={}
    for  i in li:
        if i == 66:
            continue
        if i>66:
            k1.append(i)
    
        else:
            k2.append(i)
    dic["k1"]=k1
    dic["k2"]=k2
    print(dic)
    
    <<<
    {'k1': [77, 88, 90], 'k2': [11, 22, 33, 44, 55]}
    """输出商品列表,用户输入序号,显示用户选择的商品。
    商品li=["手机","电脑","鼠标垫","游艇"]
    要求:1.页面显示序号加商品名称 如:1 手机
          2.用户输入选择的商品序号,然后打印商品名称
          3.如果用户输入的商品序号有误,提示输入有误,并重新输入
          4.用户输入q或者Q退出程序
    """
    flag = True
    while flag:
        li=["手机","电脑","鼠标垫","游艇"]
        for i in li:
            # print("%s,	%s" %(li.index(i)+1,i))
            print("{},	{}".format(li.index(i)+1,i))
        a=input("请输入商品序号:")
    
        if a.isdigit():
            if int(a)>0 and int(a)<len(li):
                print(li[int(a) - 1])
            else:
                print("请重新输入")
        elif a.upper()=='Q':
            break
        else:
            print("请输入正确的数字")
    
    <<<
    1,    手机
    2,    电脑
    3,    鼠标垫
    4,    游艇
    请输入商品序号:1
    手机
    1,    手机
    2,    电脑
    3,    鼠标垫
    4,    游艇
    请输入商品序号:

    python2 python3
    
    '''
    #python2
    #print()  print 'abc'
    #range()   xrange() 生成器
    # raw_input()
    
    #python3
    #print('abc')
    #range()
    # input()
    li1 = [1,2,3]
    li2 = li1
    li3 = li2
    print(id(li1),id(li2))

    代码块的缓存机制的适用范围: int(float),str,bool。

    
    

    int(float):任何数字在同一代码块下都会复用。

    
    

    bool:True和False在字典中会以1,0方式存在,并且复用。

    大前提:小数据池也是只针对 int(float),str,bool。

    小数据池是针对不同代码块之间的缓存机制!!!

    代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。

    而作为交互方式输入的每个命令都是一个代码块

    如果在同一代码块下,则采用同一代码块下的缓存机制。

    如果是不同代码块,则采用小数据池的驻留机制

    #数字,字符串 小数据池
    #数字的范围 -5 -- 256
    #字符串:1,不能有特殊字符
    #        2,s*20 还是同一个地址,s*21以后都是两个地址
    i1 = 6
    i2 = 6
    print(id(i1),id(i2))
    i1 = 300
    i2 = 300
    print(id(i1),id(i2))
    
    <<<
    1711899107912 1711899107912
    140723552564208 140723552564208
    1711899334704 1711899334704
    # 剩下的 list dict tuple set
    l1 = [1,]
    l2 = [1,]
    print(l1 is l2)
    
    s = '中国'
    print(s,type(s))
    s1 = '中国'
    s1=s1.encode()
    print(s1,type(s1))
    
    s1 = 'alex'
    # encode 编码,如何将str --> bytes, ()
    s11 = s1.encode('utf-8')
    s12 = s1.encode('gbk')
    print(s11)
    s2 = '中国'
    s22 = s2.encode('utf-8')
    s23 = s2.encode('gbk')
    print(s22)
    
    <<<
    False
    中国 <class 'str'>
    b'xe4xb8xadxe5x9bxbd' <class 'bytes'>
    b'alex'
    b'xe4xb8xadxe5x9bxbd'

    03 小知识点总结(以上)

    04 编码总结

    ascii
                A : 00000010  8位 一个字节
    
    unicode     A : 00000000 00000001 00000010 00000100 32位  四个字节
                中:00000000 00000001 00000010 00000110 32位  四个字节
    
    
    utf-8      A :  00100000 8位 一个字节
              中 :  00000001 00000010 00000110 24位 三个字节
    
    
    gbk        A : 00000110  8位 一个字节
             中  : 00000010 00000110 16位 两个字节
    1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
    2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)
    
    py3:
        str 在内存中是用unicode编码。
            bytes类型
            对于英文:
                 str  :表现形式:s = 'alex'
                        编码方式: 010101010  unicode
                bytes :表现形式:s = b'alex'
                        编码方式: 000101010  utf-8 gbk。。。。
    
            对于中文:
                 str  :表现形式:s = '中国'
                        编码方式: 010101010  unicode
                bytes :表现形式:s = b'xe91e91e01e21e31e32'
                        编码方式: 000101010  utf-8 gbk。。。。
  • 相关阅读:
    Canvas 基本绘图方法总结
    js: 从setTimeout说事件循环模型
    HTML5 表单元素
    jQuery选择器
    jQuery基本动画
    HangFire循环作业中作业因执行时间太长未完成新作业开启导致重复数据的问题
    .net 上传文件 Failed to load resource: net::ERR_CONNECTION_RESET Bug 解决
    ABP Zero项目入门踩坑
    关于toggle事件委托的处理
    关于height,line-height导致的样式混乱的问题
  • 原文地址:https://www.cnblogs.com/hi-python/p/10079050.html
Copyright © 2020-2023  润新知