昨日内容复习
增
1
dic['age'] = 21
2
dic.setdefault()
删
pop() 有返回值,按key删除,默认返回none
clear()清空字典
del()按key删除无返回值
popitem()随机删除,有返回值,返回元祖
改
update()把一个字典覆盖到另一个字典
查
dic.keys()循环打印
dic.values()打印索引值
dic.items()打印键值对
dic.get(key,none)
练习题
一
将1-5放到一个key,6-10放到另一个key
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
dic = {'small':[], 'big':[]}
for i in li:
if i < 6:
dic['small'].append(i)
else:
dic['big'].append(i)
print(dic)
二 购物车
输入商品列表,用户输入序号,显示用户选中的商品
商品 li = [“手机”, “电脑”, “鼠标垫”, “游艇”]
要求:1,页面显示 序号+商品名称,如
1 手机
2 电脑
……
2,用户输入选择的商品序号,然后打印商品名称
3,如果用户输入的商品序号有错,则提示输入有误,并重新输入
4,用户输入Q或q退出程序
while 1:
li = ["手机", "电脑", "鼠标垫", "游艇"]
for i in li:
print('{}\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 0 < num_of_choice <= len(li):
print(li[num_of_choice-1])
else:
print('请输入正确的商品编号!')
elif num_of_choice.upper() == 'Q':
break
else:
print('请输入正确的商品编号!')
购物车第二版
# 把货物放在货架上
li = [
{'name': '苹果', 'price': 10},
{'name': '西瓜', 'price': 50},
{'name': '香蕉', 'price': 15},
]
shopping_car = {}
print('欢迎光临')
money = input('你有多少钱?')
if money.isdigit() and int(money) > 0:
while 1:
for i, k in enumerate(li):
print('序号{}, 商品{}, 价格{}'.format(i, k['name'], k['price']))
choose = input('请输入您要购买的商品序号:')
if choose.isdigit() and 0 <= int(choose) < len(li):
num = input('您要购买的商品数量:')
if num.isdigit():
if int(money) > li[int(choose)]['price'] * int(num):
money = int(money) - li[int(choose)]['price'] * int(num)
if li[int(choose)]['name'] in shopping_car:
shopping_car[li[int(choose)]['name']] = shopping_car[li[int(choose)]['name']] + int(num)
else:
shopping_car[li[int(choose)]['name']] = int(num)
print('购物车中商品有{},您的余额是{}'.format(shopping_car,money))
else:
print('您的金额不足!')
break
else:
print('请输入正确商品序号')
今日:小知识点总结
一 python2与python3的区别
print方法
python 2 不用加()也可以加()
python 3 必须加()
range
python2中有xrange()插入器
python3中只有range
input
python2 raw_input()
python3 input()
二 = == 与 is
=
赋值
==
比较值是否相等
is
比较内存地址即ID
数字 字符串 小数据池
数字
在-5~256中创建数字至开辟一个空间
字符串
1 含有特殊字符不会公用一个内存
2 str20公用一个地址,str21以后开辟两个地址,str只能一个字符
编码
ASCII
一个字符占八位,一个字节
UNICODE
32位,四个字节
字母: 八位 A:
中文: 24位,三个字节
GBK
字母: 一个字节,八位
中文: 两个字节,十六位
关系
1 各个编码之间的二进制,不能互相识别
2 文件的储存和传输不能是unicode 只能是(utf-8或utf-16或gbk,gb2312,ASCII等)
Python 3
str在内存中使用UNICODE储存的
问题:UNICODE空间大,需转化
bytes类型与str类型
类似字符串,但不是以UNICODE编码(与str区别)
str:
表现形式 s = ‘mashengde’
编码形式;UNICODE
bytes:
表现形式:s = b’mashengde’
编码形式;utf-8或GBK
对于中文
str:
表现形式 s = ‘中国’
编码形式;UNICODE
bytes:
表现形式:s = b’x\e91\e91\e01\e21\31\e32’
编码形式:utf-8
如何将STR转换成Bytes
s1 = 'mashengde'
s2 = s1.encode()
print(type(s2))
中文
s1 = '马圣德'
s2 = s1.encode()
print(s2)