zoukankan      html  css  js  c++  java
  • day6:前两小节补充

    1,练习题一:以66分割,大于部分一个键值对,小于部分一个键值对

    li = [23,78,67,45,34,89,67,78,23,23]
    lig = []
    lil = []
    dic = {}
    for i in li:
        if i == 66:
            continue
        elif i > 66:
            lig.append(i)
        else:
            lil.append(i)
    
    dic.setdefault("k1",lig)
    dic.setdefault("k2",lil)
    print(dic.items())
    
    运行结果:
    dict_items([('k1', [78, 67, 89, 67, 78]), ('k2', [23, 45, 34, 23, 23])])

    2,练习题二

    li = ["apple","pear","peach","watermelon"]
    # 页面显示商品名称
    for i in li:
        print(li.index(i)+1,"		",i)
    
    # 用户输入index显示商品名称
    
    while 1:
        num = input(">>>").strip()  # 这句话注意要写在循环里面
        if num.isdigit():
            num = int(num)
            if num in range(0,len(li)+1):
                print(li[num-1])
            else:
                print("number out of range")
        elif num.lower() =="q":
            break
        else:
            print("please input an number")
    运行结果:
    1          apple
    2          pear
    3          peach
    4          watermelon
    >>>5
    number out of range
    >>>4
    watermelon
    >>>e
    please input an number
    >>>q

    3,Python2 和Python3的几点小区别:

    Python2除了range函数还有个xrange,但是Python3只有range;

    Python2的input函数叫做raw_input,Python3叫做input;

    Python2的print函数,加括号不叫括号都可以,Python3必须加,另外还有之前讲解的编码区别

    4,赋值运算符= 和身份运算符is 前置比较的是值,后者比较的是地址,如果用pycharm 的话,很多都会做优化占用一个地址,如果用console就不是一个了

    这个老师也没有总结出来规律知道就好了,数字和字符串,基本上数字-5到256,字符串s*20 还是同一个,s*21就不是了,遇到的时候,还是实际来跑一下,因为没有明显规律

    a = "abcdefgh"
    b = "abcde"
    c = a
    print (id(a),id(b),id(c))
    print (a == b)  #比较的是值
    print (a is b)  #比较的是地址
    print (a == c)
    print (a is c)
    
    
    # 由于小资源池的存在,Python为了节省空间自动用一块儿存储空间
    a = 20000
    b = 20000
    c = a
    print (id(a),id(b),id(c))
    print (a == b)
    print (a is b)
    print (a == c)
    print (a is c)
    
    运行结果:
    4460901104 4459766536 4460901104
    False
    False
    True
    True
    4459708336 4459708336 4459708336
    True
    True
    True
    True
    li = [1,]
    l2 = [1,]
    print(li is l2)
    print(li == l2)
    
    运行结果:
    False
    True

    5,各个编码之间的二进制文件是不能互相认识的,密码本不同,文件的储存传输不能是unicode,只能是(GBK,GBK2312,UTF-8,UTF-16,ASCII)等也就是bytes类型,他们之间的转化需要通过Unicode,str在内存中是Unicode存储的,不能直接用来存储和传输,必须先转化成bytes类型,pycharm帮我们完成了这个转化的过程,其他的文件需要我们自己手动转化

    """
    bytes类型
    
    对于英文:
    str :表现形式:s = "lisa"
          编码方式:01010100 Unicode
    bytes:表现方式:s =b'lisa'
          编码方式:s = 10010011 utf-8 gbk......
          
    对于中文:
    str :表现形式:s = "我们"
          编码方式:01011110 Unicode
    bytes:表现方式:s =b'xe6x88x91xe4xbbxac'
          编码方式:s = 10010011 11100101 11100001 utf-8 gbk......
    
    """
    
    s = 'lisa'
    s1 = b'lisa'
    
    print(s,type(s))
    print(s1,type(s1))
    print("")
    s = '我们'
    # s1 = b'我们' #注意这个是错误的 报错:SyntaxError: bytes can only contain ASCII literal characters.
    # encode 函数将str转化为bytes,还有decode函数
    # 注意两种编码方式占用字节数,以及编码结果
    s1 = s.encode("gbk")
    print(s1,type(s1))
    s1 = s.encode('utf-8')
    print(s,type(s))
    print(s1,type(s1

    运行结果:
    lisa <class 'str'>
    b'lisa' <class 'bytes'>

    b'xcexd2xc3xc7' <class 'bytes'>
    我们 <class 'str'>
    b'xe6x88x91xe4xbbxac' <class 'bytes'>
  • 相关阅读:
    (转)使用介质设备安装 AIX 以通过 HMC 安装分区
    (转)在 VMware 中安装 HMC
    (转)50-100台中小规模网站集群搭建实战项目(超实用企业集群)
    (转)awk数组详解及企业实战案例
    (转) IP子网划分
    教你如何迅速秒杀掉:99%的海量数据处理面试题(转)
    PHP对大文件的处理思路
    十道海量数据处理面试题与十个方法大总结
    mysql查询更新时的锁表机制分析
    mysql数据库问答
  • 原文地址:https://www.cnblogs.com/lisa-blog/p/10024303.html
Copyright © 2011-2022 走看看