day6小知识点汇总及编码进阶

1、昨日内容回顾

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)

不知道key是否存在
dic.get(key,None)

2、作业讲解

 1 """
 2 3、元素分类
 3 有如下值li = [11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个
 4 key中,将小于66的值保存至第二个key的值中。
 5 即:{'k1':大于66的所有值列表, 'k2':小于66的所有值列表}
 6 """
 7 '''
 8 li = [11,22,33,44,55,66,77,88,99,90]
 9 dic = {}
10 li_big = []
11 li_small = []
12 for i in li:
13     if i > 66:
14         li_big.append(i)
15     else:
16         li_small.append(i)
17 dic.setdefault('k1',li_big)
18 dic.setdefault('k2',li_small)
19 print(dic)
20 '''
21 """
22 4、输出商品列表,用户输入序号,显示用户选中的商品
23    商品 li = ["手机","电脑","鼠标垫","游艇"]
24 要求:1:页面显示 序号 + 商品名称,如:
25          1手机
26          2电脑
27       2:用户输入选择的商品序号,然后打印商品名称
28       3:如果永华输入的商品序号有误,则提示输入有误,并重新输入。
29       4:用户输入Q或q,退出程序。
30 """
31 while 1:
32     li = ["手机","电脑","鼠标垫","游艇"]
33     for i in li:
34         print('{}\t\t{}'.format(li.index(i)+1,i))
35     num_of_chioce = input('请输入商品序号')
36     if num_of_chioce.isdigit():
37         num_of_chioce = int(num_of_chioce)
38         if num_of_chioce > 0 and num_of_chioce <= len(i):
39             print(li[num_of_chioce -1])
40         else:print('请输入有效数字')
41     elif num_of_chioce.upper() == '0':break
42     else:print('请输入数字')

 3、小知识点总结

'''
python2 python3

'''
#python2
#print() print'abc'
#range()  xrange()生成器
#raw_input()

#python3
#python('abc')
#range()
#input()

# =赋值  ==比较值是否相等 is比较,比较的是内存地址 id(内容)
# li1 = [1,2,3]
# li2 = li1
# # print(li1 is li2)
# print(id(li1),id(li2))

#数字,字符串  小数据池
#数字的范围 -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))
# s1 = 'alex'
# s2 = 'alex'
# print(s1 is s2)

4、编码

ascii:1个字符用1个字节表示,1个字节是8位
     A:00000010  8位  一个字节

unicode:1个字符用32位表示,英文中文都是一样
     A:00000000 00000001 00000010 00000100  32位 四个字节
    中:00000000 00000001 00000010 00000110  32位 四个字节

utf-8:1个字符用8位表示
     A: 00100000 8位 一个字节
     中: 00000001 00000010 00000110 24位 三个字节

gbk:
     A:   00000110  8位 一个字节
     中: 00000010  00000110 16位 两个字节
1、各个编码之间的二进制,是不能互相识别的,会产生乱码。
2、文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk gb2312 ascii等)

py3:
    str 在内存中是用unicode编码。
        bytes类型不是用unicode编码的
        对于英文:
            str: 表现形式: s = 'alex'
                 编码方式: 010101010 unicode
            bytes:表现形式:s = b'alex'
          编码方式: 00101010 utf-8 gbk ...

对于中文:
str: 表现形式: s = '中国'
编码方式: 010101010 unicode
bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
编码方式: 00101010 utf-8 gbk ...

 

 

 

 

 

posted @ 2019-03-18 15:00  taoziya  阅读(122)  评论(0)    收藏  举报