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,\t%s" %(li.index(i)+1,i))
print("{},\t{}".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))
#数字,字符串 小数据池
#数字的范围 -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'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'>
b'alex'
b'\xe4\xb8\xad\xe5\x9b\xbd'
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'x\e91\e91\e01\e21\e31\e32'
编码方式: 000101010 utf-8 gbk。。。。