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)
'''
View Code

三、 小知识点总结

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

 

posted @ 2018-12-15 21:43  pumpkin_J  阅读(70)  评论(0)    收藏  举报