• 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。。。。
  • 相关阅读:
    JS: Promise
    JS: 数据结构与算法之栈
    JS: 数组乱序
    JS: 数组扁平化
    JS:函数柯里化
    JS: 防抖节流
    JS:事件委托
    理解Node.js(译文)
    Javascript闭包入门(译文)
    你真的懂ajax吗?
  • 原文地址:https://www.cnblogs.com/hi-python/p/10079050.html
Copyright © 2020-2023  润新知