python基础06
python基础06
昨日回顾
dict:dic = ['name':'alex']
增:dic['age'] = 21
dic.setdefault()没有就增加
删除:pop()按照key删除,有返回值
clear
del dic['name']
popitem()随机删除 返回的是元祖
改 update
查
dic.key()
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的值保存至即:['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_chioce=input('请输入选择的商品序号:')
If num_of_chioce.isdigit():
num_of_chioce=int(num_of_chioce)
if num_of_chioce > 0 and num_of_chioce<=4:
print(li[num_of_chioce-1])
else:print('请输入有效数字')
elif num_of_chioce.upper() == 'Q':break
else:print('请输入数字')
python2 和 python3
#python2
#print() print 'abc'
#range() xrange()生成器
#raw_input()
#python3
#print('abc')
#range()
#input
#赋值 == 比较值是否相等is比较,比较的是内存地址
li1 = {1,2,3}
li2 = li1
print(li1is li2)
#赋值 == 比较值是否相等 is比较,比较的是内存地址 id(内容)
li1 = [1,2,3]
li2 = li1
print(id(li),id(li2))
#数字,字符串
i1 = 6
i2 = 6
print(id(i1),id(i2))
#数字,字符串 小数据池
#数字的范围-5-----256
#i1 = 6
#i2 = 6
#print(id(i1),id(i2))
i1 = 300
i2 = 300
print(id(i1),id(i2))
#字符串:1.不能有特殊字符
2.s*20还是同一个地址,s*21以后都是两个地址
#i1 = 6
#i2 = 6
#print(id(i1),id(i2))
i1 = 300
#剩下的list dict tuple set
i1 = [1,]
i2 = [1,]
print(i1 is i2)
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.文件的储存,传输,不能是unicode(只能输utf-8,utf-16,gbk,gb2312,ascii等)
python3:
str在内存中是用Unicode编码
bytes类型
python3:
str在内存中是用Unicode编码
bytes类型
对于英文:
str:表现形式:s = 'alex'
编码方式:010101010 Unicode
bytes:表现形式:s = b'alex'
编码方式:000101010 utf-8 gbk....
对于中文:
str :表现形式 :s = '中国'
编码方式 :010101010 unicode
bytes:表现形式:s = b'\xe4\e91\e01\e21\e31\e32'
编码方式:000101010 utf-8 gbk....
s = '中国'
print(s,type(s))
s1 = b'中国'
print(s1,type(s1))
s1 = 'alex'
#encode编码,如何将str------>bytes
s11 = s1.encode('utf-8')
print(s11)
s2 = '中国'
s22 = s2.encode('utf-8')
print(s22)
s = 'alex'
s1 = b'alex'
print(s,type(s))
print(s1,type(s1)
s22 = s2.encode('gbk')
print(s22)
购物车
'''
买家 卖家 商品 金钱
'''
li =[{'name':'苹果','price':10},
{'name':'香蕉','price':20}
{'name':'西瓜','price':30},
]
#把货物放在货架上
shopping_car = {}
print('欢迎光临大铁锤水果店')
money = input('让我看看你的钱')
while 1:
if money.isdigit() and int(money) >0:
for i,k in enumerate(li):
print('序号{},商品{},价格{}'.format(i,k['name'],k['price']))
choose = input('请输入您要购买的商品序号')
if choose.isdigit() and 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']=inr(num)
print('购物车中的商品有{},你的余额为{}'.format())
else:
print('穷鬼,回去跟你老婆要钱!')
break;
else:
print('都说了是序号,你傻啊!')