1、昨日内容回顾
自己多练
2、作业
# 作业# 1,有如下变量(tu是个元祖),请实现要求的功能。
tu= ("alex",[11,22,{"k1":'V1',"k2":["age","name"],"k3":(11,22,33)},44])
# a.讲述元祖的特性。
# 儿子不能改,孙子可能可以改
# b.请问tu变量中的第一个元素 “alex” 是否可被修改?。
# 不可以
# c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven" 。
# k2 对应的是一个列表,可以改,(元{字[列表]典}组)
# tu[1][2]['k2'].append('seven')
# print(tu)
# d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven" 。
# 元组,不能# 2,字典 dic,
dic= {'k1':'v1','k2':'v2','k3':[11,22,33]}
#a.请循环输出所有的key
for i in dic.keys():print(i)
#b.请循环输出所有的value.
for i in dic.values():print(i)
#c.请循环输出所有的key和value.
for k,v in dic.items():print(k,v)
for i in dic.items():print(i)
#d.请在字典中添加一个键值对,"k4": "v4",输出添加后的字典。
dic['k4'] = 'v4'
print(dic)
#e.请在修改字典中“k1” 对应的值为"alex",输出修改后的字典。
dic.setdefault('k4','v4')
print(dic)
#f.请在k3对应的值中追加一个元素44,输出修改后的字典。
dic['k3'] = [11,22,33,44]
print(dic)
#g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典。
dic1 = dic['k3']
dic1.insert(1,18)
dic['k3'] = dic1
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,]
dic = {}
l_greater = [] #大于66的所有列表
l_less = [] #小于66的所有列表
for i in li:if i == 66:continueif 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,退出程序。
while 1:li = ["手机","电脑","鼠标垫","游艇"]for i in li:print('{}\t{}'.format(li.index(i)+1,i))num = input('请输入商品序号/输入 Q or q 退出:')if num.isdigit():num = int(num)if 0
3、python2 、python3 的区别
python 2: python 3:
print() print'abc' print('abc')
range() xrange() 生成器 range()
raw_input() input()
4、= == is
=:把一个值赋值给另一个值
==:比较值是否相等
is: 比较,比较的是内存地址 id(内容)
li1 = [1,2,3] li2 = li1 此时li1和li2 用的是否是一个内存地址
print(li1 is li2) #is 是比较内存地址 结果为Ture
print(id(li1),id(li2)) # id 是查li1 及li2 的内存地址,结果相同
5、数字、字符串
小数据池:在一定程度上节省空间
数字范围:-5 —— 256
字符串:1、不能有特殊特殊字符
2、s*20还是同一个地址,s*21以后都是两个地址
l1 = 6
l2 = 6
print(id(l1),id(l2))
剩下的:list dict tuple set 都没有小数据池概念
6、编码
ascii:
A:00000010 一个字节 8位
unicode:
A:00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节
utf-8:
A:0010 0000 8位一个字节
中:00000001 00000010 00000110 24位 三个字节
gbk:
A:00000110 8位 一个字节
中:00000010 00000110 16位 两个字节
(1)各个编码之间的二进制是不能相互是别的,会产生乱码。
(2)文件的储存传输不能是unicoide(只能是utf—8 utf—16 gbk gb2312 asciid 等)
python3:
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
# s = 'alex'
# s1 = b'alex'
# print(s,type(s))
# print(s1,type(s1))
# encode 编码,外部将 str-->bytes
# 内部将unicod——>utf-8、gbk ()内可以设置编码方式
s1 = 'alex'
s11 = s1.encode('utf-8')
s12 = s1.encode('gbk')
print(s11) # b'alex'
print(s12)s2 = '中国'
s22 = s2.encode('utf-8')
s23 = s2.encode('gbk')
print(s22)
print(s23)
# 购物车作业讲解
# 买家 卖家 商品 金钱
li = [{'name':'苹果','price':10},{'name':'香蕉','price':20},{'name':'西瓜','price':30},
]
# 把货物放在货架上
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 int(choose)