day06 小知识点汇总
一、昨日内容回顾
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)
二、昨日作业讲解
# 2 字典dic dic={'k1':'v1','k2':'v2','k3':[11,22,33]} # 循环输出所以的key dic={'k1':'v1','k2':'v2','k3':[11,22,33]} for i in dic.keys(): print(i) # 循环输出所有的value for i in dic.values(): print(i) # 循环输出所有的key和value for i in dic.items(): print(i) # 在字典中输入一个键值对'k4':'v4' dic['k4'] = 'v4' print(dic) dic['k1'] = 'alex' print(dic) dic['k3'].append(44) print(dic) dic['k3'].insert(0,18) print(dic) ''' 3、元素分类 有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表} ''' li= [11,22,33,44,55,66,77,88,99,90] dic ={} l_greater=[] #大于66的所有值列表 l_less=[] #小于66的所有值列表 for i in li: if i == 66:continue if i > 66 : l_greater.append(i) else : l_less.append(i) dic.setdefault('k1',l_greater) dic.setdefault('k2',l_less) print(dic) ''' 4、输出商品列表,用户输入序号,显示用户选中的商品 商品 li = ["手机", "电脑", '鼠标垫', '游艇'] 要求:1:页面显示 序号 + 商品名称,如: 1 手机 2 电脑 … 2: 用户输入选择的商品序号,然后打印商品名称 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。 4:用户输入Q或者q,退出程序。 ''' flag = True while flag: li = ["手机", "电脑", "鼠标垫", "游艇"] for i in li: print('{}\t\t{}'.format(li.index(i)+1,i)) num_of_chioce = input('请输入选择的商品序号/输入Q或者q退出程序:') if num_of_chioce.isdigit(): num_of_chioce = int(num_of_chioce) if num_of_chioce > 0 and num_of_chioce <= len(li): print(li[num_of_chioce-1]) else:print('请输入有效数字') elif num_of_chioce.upper() == 'Q':break else:print('请输入数字') ''' # dic.get(key,None) li = [11,22,33,44,55,66,77,88,99,90] dic = {} l1 = [] l2 = [] for i in li: if i == 66:continue if i > 66: l1.append(i) else: l2.append(i) dic['k1'] = l1 dic['k2'] = l2 print(dic) '''
三、 小知识点总结
1、Python2和Python3的区别
a.python2中:print可以加括号,可以不加;
range() xrange() 生成器
用户交互:row_input()
b.python3中:print必须加括号;
range()
input()
2.'=','==','is','id'
=:赋值 ==:比较值是否相等 is:比较,比较的是内存地址 id(内容)
li1 = [1,2,3] li2 = li1 li3 = li2 print(id(li1),id(li2)) #内存地址一样
3.数字,字符串 小数据池
数字的范围 -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))
剩下的 list dict tuple set没有小数据池的概念
l1 = [1,] l2 = [1,] print(l1 is l2)
4.bytes类型
s = 'alex' s1 = b'alex' print(s,type(s)) print(s1,type(s1)) s = '中国' print(s,type(s)) s1 = b'中国' print(s1,type(s1))
5.encode 编码,如何将str转换成bytes类型
s1 = 'alex' s11 = s1.encode('utf-8') s11 = s1.encode('gbk') print(s11) s2 = '中国' s22 = s2.encode('utf-8') s22 = s2.encode('gbk') print(s22)
四、编码
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'x\e91\e91\e01\e21\e31\e32'
编码方式: 000101010 utf-8 gbk......

浙公网安备 33010602011771号