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 ...



浙公网安备 33010602011771号