自学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]

 

posted @ 2018-07-20 15:39  大脸猫爱吃鱼!!!  阅读(214)  评论(0编辑  收藏  举报