自学python之路(day4)
一 购物车小程序
goods=[{'name':'香蕉','price':3}, {'name':'苹果','price':5}, {'name':'菠萝','price':6}] shop_car={} li=[] for i in range(0,len(goods)): li.append(i) money=input('请输入您的总金额:') if money.isdigit(): while True: if int(money) > 0: for i,j in enumerate(goods): print('水果序号:{},商品:{},价格:{}'.format(i,j['name'],j['price'])) flag = input("请输入需购买的水果序号:") if flag.isdigit() and int(flag) in li: num=input('请输入商品的数量:') if num.isdigit() and int(num) > 0: money=int(money) - goods[int(flag)]['price']*int(num) if goods[int(flag)]['name'] in shop_car: shop_car[goods[int(flag)]['name']]=shop_car[goods[int(flag)]['name']] + int(num) else: shop_car[goods[int(flag)]['name']]=int(num) print('购物车中的商品有{},您的余额为{}'.format(shop_car,money)) else: print('请输入规范的序列号!!!') else: print('账户余额不足!!!') break else: print('输入纯数字!!!')
二 集合
集合是无序的、不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希的。
以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
1)集合的创建
set1 = {7,8,'abby'} set2 = set({7,8,'abby'}) set3 = {1,2,3} print(set1) print(set2) print(set3)
执行结果:
{8, 'abby', 7} {8, 'abby', 7} {1, 2, 3}
2)增
set1={'abby','marry','barry','herry'} #add set1.add('kaikai') print(set1) #update 无序的 set2={'abby','marry','barry','herry'} set2.update('abc') print(set1)
执行结果:
{'barry', 'kaikai', 'abby', 'marry', 'herry'} {'barry', 'b', 'abby', 'a', 'marry', 'c', 'herry'}
3)删
#pop 随机删除 set3={'abby','marry','barry','herry'} print(set3.pop()) print(set3) #按元素删除 set4={'abby','marry','barry','herry'} set4.remove('abby') print(set4) #清空集合 set5={'abby','marry','barry','herry'} set5.clear() print(set5)
执行结果:
marry {'barry', 'abby', 'herry'} {'marry', 'barry', 'herry'} set()
3)查
set={'abby','marry','barry','herry'} for i in set: print(i)
执行结果
marry
herry
abby
barry
4)其他操作
set1={1,2,3,7,8,9} set2={4,5,6,7,8,9} # 交集 (& 或者 intersection) print(set1 & set2) print(set1.intersection(set2)) # 并集 (| 或者 union) print(set1 | set2) print(set2.union(set1)) # 差集 (- 或者 difference) print(set1 - set2) print(set1.difference(set2)) #反交集 (^ 或者 symmetric_difference) print(set1 ^ set2) print(set1.symmetric_difference(set2))
执行结果:
{8, 9, 7} {8, 9, 7} {1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3} {1, 2, 3} {1, 2, 3, 4, 5, 6} {1, 2, 3, 4, 5, 6}
#子集与超集 set1 = {1,2,3} set2 = {1,2,3,4,5,6} #set1是set2的子集 print(set1 < set2) print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 #set2是set1的超集 print(set2 > set1) print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。 #frozenset不可变集合,让集合变成不可变类型。 s = frozenset('barry') print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
执行结果:
True True True True frozenset({'a', 'b', 'y', 'r'}) <class 'frozenset'>
小练习题
#给列表l1去重
l1=[1,2,3,3,5,6,7] l2=[] print(set3) for i in set(l1): l2.append(i) li=l2 print(li)
执行结果:
[1, 2, 3, 5, 6, 7]