# _author:"Isaac_hu"
# data: 2018/2/26

product_list = [
    ('Mac', 9000),
    ('kindle', 800),
    ('tesla', 90000),
    ('python book', 105),
    ('bike', 2000),
]
shopping_car = []
saving = input('please input your money:')
if saving.isdigit():
    saving = int(saving)
    while True:
        for i, v in enumerate(product_list, 1):  # in后面是一个序列,enumerate添加序号。
            # print(product_list.index(i)+1, i)
            print(i, '---', v)
        choice = input('选择购买的商品编号[退出:q]:')
        if choice.isdigit():
            choice = int(choice)
            if 0 < choice <= len(product_list):
                p_item = product_list[choice-1]
                if p_item[1] < saving:
                    saving -= p_item[1]
                    shopping_car.append(p_item)
                else:
                    print('余额不足,还剩%s' % saving)
                print(p_item)
            else:
                print('编号不存在')
        elif choice == 'q':
            print('退出')
            print('-----您已购买如下商品------')
            for i in set(shopping_car):
                print(i, ':', shopping_car.count(i))
            print('您还剩%s元钱' % saving)
            break
        else:
            print('invalid input')

  购物车的优化版,这样写的好处可以增加物品的种类,可以修改。在后面用到了enumerate函数,这个可以为物品进行编号。还有set函数,用于计算某个商品在购物车出现的次数。