day6 编码

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

猜你喜欢

转载自www.cnblogs.com/hi-python/p/10079050.html