一、昨日回顾
1.dict : dic = ['name' : 'alex']
增:dic['age'] = 21 存在就覆盖
dic.setdefault:() 没有就增加
删:pop() 按照key删除,有返回值
clear
del:dic['name']
popitem()随机删除 返回是元祖
改:update
查:
dic.keya()
dic.values()
dic.items()
for k,v in dic.items():
print(k,v)
dic.get(key,None)
# 作业:有如下值 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)
购物车作业
# 输出商品列表,用户输入序号,显示用户选中的商品
# 商品 li = ['手机','电脑','鼠标垫','游艇']
# 要求:1、显示页面序号 + 商品名称,如:
# 1 手机
# 2 电脑
# ... ...
# 要求:2、用户选择的商品序号,然后打印商品名称
# 要求:3、如果用户输入商品序号有错误,提示输入有误,并重新输入
# 要求:4、用户输入 Q 或 q 退出程序
while 1:
li = ['手机','电脑','鼠标垫','游艇']
for i in li:
print('{}\t\t{}'.format(li.index(i)+1,i))
num_of_choice = input('请输入选择商品的序号(输入Q或q退出程序):')
if num_of_choice.isdigit():
num_of_choice = int(num_of_choice)
if num_of_choice > 0 and num_of_choice<= len(li):
print(li[num_of_choice-1])
else:print ('请输入有效数字')
elif num_of_choice.upper() == 'Q':break
else:print('请输入数字')
二、小知识点总结;
1.python2 与 python3区别
python2:
print () print 'abc'
range() xrange()
raw_input()
python3:
print('abc')
range()
input()
2. = == is id()
= 赋值
== 比较值是否相等
#is 比较,比较的是内存地址
li1= [1,2,3]
li2=li1
print(id(li1),id(li2)) # 表示li1与li2用的是同一个列表
# 数字 字符串 小数据池
#数字范围 -5 —— 256
#字符串:1、不能含有特殊字符
# 2、s*20还是同一个字母
l1 = 6
l2 = 6
print(id(l1),id(l2)) # 同一个列表
li1 = 300
li2 = 300
print(id(li1),id(li2))#不同列表 在窗口中
# 剩下的list dict tuple set 无小数据库 除了字符串和数字剩下的没有小数据库
l1 = [1,]
l2 = [1,]
print(l1 is l2) #fales 元素没有小数据库
ascii
A : 00000010 8位一个字节
unicode
A : 00000000 00000001 00000010 00000100 32位 四个字节
中 : 00000000 00000001 00000010 00000100 32位 四个字节
utf-8
A : 0010 0000 8位一个字节
A : 00000001 0000001000000110 24位 三个字节
gbk系列
A : 00000110 8位 一个字节
中 : 0000001000000110 16位 两个字节
1、各个编码之间的二进制,是不能相互是别的,会产生乱码。
2、文件的储存,传输不能是unicode (只能是utf-8、 gbk、 gb2312、 asciid等)
py3 :
str 在内存中是用unicode编码。
bytes类型
对于英文:
str : 表现形式 : s = 'alex'
编码方式 : 010101010 unicode
bytes : 表现形式 : s = b'alex'
编码方式 : 000101010 utf-8 gbk
s = 'alex'
s1 = b'alex'
print(s,type(s)) # alex <class 'str'>
print(s1,type(s1)) #b'alex' <class 'bytes'>
对于中文 :
str : 表现形式 : s = '中国'
编码方式 : 010101010 unicode
bytes : 表现形式 : s = b' \e91\e91\e01\e21\e31\e32'
编码方式 : 000101010 utf-8 gbk
s1 = 'alex'
# encode 编码,如何将str-->bytes
sl1 = s1.encode('utf-8')
print(sl1) # b'alex'
s2 = '中国'
s22 = s2.encode('utf-8')
print(s22) #b'\xe4\xb8\xad\xe5\x9b\xbd' 每个汉字由三个字节表示
s33 = s2.encode('gbk')
print(s33) # b'\xd6\xd0\xb9\xfa' 每个汉字由两个字节表示