zoukankan      html  css  js  c++  java
  • 购物车

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-  
    # by wk
    
    '''
    购物车
    功能要求:
    
    要求用户输入总资产,例如:2000
    显示商品列表,让用户根据序号选择商品,加入购物车
    购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    附加:可充值、某商品移除购物车
    goods = [
        {"name": "电脑", "price": 1999},
        {"name": "鼠标", "price": 10},
        {"name": "游艇", "price": 20},
        {"name": "美女", "price": 998},
    ]
    '''
    
    
    # 充值模块
    def recharge(userlist):
        flag1 = True  # 循环标记
        while flag1:
            flag2 = True  # 循环标记
            add_money = input('请输入充值金额(数字): ')
            if add_money.isdigit():
                old_money = int(userlist[0]['money'])
                new_money = old_money + int(add_money)
                users[0]['money'] = new_money
                print('您现在的余额是 %s元' % userlist[0]['money'])
                while flag2:
                    readd = input('是否继续充值,(Y or y)继续,(N or n)返回上一级: ')
                    if readd == 'Y' or readd == 'y':
                        flag2 = False
                    elif readd == 'N' or readd == 'n':
                        flag1 = False
                        flag2 = False
                    else:
                        print('输入有误,请重新输入
    ')
                        flag2 = True
            else:
                print('输入的不是数字请重新输入
    ')
    
    
    def usercenter(userlist):
        users = userlist
        print('=======用户中心=======
     用户名: %s  余额: %s' % (users[0]['name'], users[0]['money']))
    
    
    # 商品列表
    def goods_list(goodslists):
        my_goods_list = goodslists
        print('请选择商品')
        for k, goods in enumerate(my_goods_list):
            print('产品编号:%s 名称: %s 价格: %s元, 剩余: %s' % (k, goods['name'], goods['price'], goods['nums']))
        while True:
            my_goods_id = input('请输入要买商品的编号: ')
            if my_goods_id.isdigit():
                return my_goods_id
            print('输入的不是数字请重新输入
    ')
    
    
    # 购物车模块
    def cartlists(goodsid, cart_id):
        flag1 = True
        flag_list = True
        while flag1:  # 循环标记
            cart_id = cart_id + 1  # 为了给购物车里的商品编号,便于移除商品
            flag2 = True
            # goods_id = input('请输入要买商品的编号: ')
            goods_id = int(goodsid)
            print('您选择了 %s' % (goodslist[goods_id]['name']))
            goods_num = input('请输入购买数量: ')
            if goods_num.isdigit():
                print('您购买的数量是 %s 件' % (goods_num))
                goods_name = goodslist[goods_id]['name']
                goods_price = int(goodslist[goods_id]['price'])
                oldnum = int(goodslist[goods_id]['nums'])
                newnum = oldnum - int(goods_num)
                if newnum > 0:  # 判断产品数量够不够
                    # goodslist[goods_id]['nums'] = newnum
                    car_dict = {}  # 创建购物车字典
                    car_dict['id'] = cart_id  # 编号
                    car_dict['name'] = goods_name  # 商品名称
                    car_dict['nums'] = goods_num  # 购买数量
                    car_dict['price'] = goods_price * int(goods_num)  # 价格
                    carlist.append(car_dict)
                    while flag2:  # 循环标记
                        buy_again = input('是否继续购买请按(Y or y),去结账请按(N or n): ')
                        if buy_again == 'Y' or buy_again == 'y':
                            flag2 = False
                            flag1 = False
                            flag_list = True
                        elif buy_again == 'N' or buy_again == 'n':
                            flag1 = False
                            flag2 = False
                            flag_list = False
                        else:
                            print('输入有误,请重新输入
    ')
                            flag2 = True
                else:
                    print('没那么多了,看看还有没有别的想买的
    ')
                    break
            else:
                print('输入的不是数字请重新输入
    ')
        # print('this is goods_num   ', goods_num)
        return carlist, flag_list, goods_id, newnum, cart_id
    
    
    # 购买模块
    def my_buy(cart_list, goods_id, goods_num):
        goods_total_money = 0
        if not cart_list:
            pass
        else:
            while True:
                print('购物车信息:')
                for buy_car in cart_list:
                    print('购买编号: %s  产品名称: %s  价格: %s元  数量: %s个' % (
                        buy_car['id'], buy_car['name'], buy_car['price'], buy_car['nums']))
                my_confirm = input('订单确认请按(Y or y),移除请输入编号(数字),取消订单请按(N or n): ')
                if my_confirm == 'Y' or my_confirm == 'y':
                    for cart in cart_list:
                        goods_total_money += cart['price']
                    myoldmoney = int(users[0]['money'])
                    # goodsmoney = carlist[goods_id]['price'] * int(goods_num)
                    my_new_money = myoldmoney - goods_total_money
                    if my_new_money >= 0:  # 判断钱够不够
                        users[0]['money'] = my_new_money
                        goodslist[goods_id]['nums'] = goods_num
                        print('提交成功!')
                        print('当前您的订单信息:')
                        for buy_car in car:
                            print('产品名称: %s  价格: %s元  数量: %s个' % (
                                buy_car['name'], buy_car['price'], buy_car['nums']))
                        # print('当前您的账户信息:
    ', users)
                        for buy_users in users:
                            print('我的账户信息:
    账户名: %s  余额: %s元' % (buy_users['name'], buy_users['money']))
                        break
                    else:
                        print('钱不够了请去充值,提交失败
    ')
                        break
                elif my_confirm == 'N' or my_confirm == 'n':
                    print('您已取消
    ')
                    break
                else:
                    no_this_id = 0
                    if my_confirm.isdigit():
                        # print(type(len(cart_list)))
                        for my_cart in cart_list:
                            if my_cart['id'] == int(my_confirm):
                                cart_list.remove(my_cart)
                                print('移除成功!')
                                no_this_id = 1
                                break
                    elif no_this_id == 0:
                        print('没有这个编号,请重新输入
    ')
                    else:
                        print('输入有误,请重新输入
    ')
    
    
    if __name__ == '__main__':
        users = [
            {'name': 'wukun', 'money': 1000}
        ]
        goodslist = [
            {'name': '电脑', 'price': 1999, 'nums': 10},
            {'name': '鼠标', 'price': 10, 'nums': 10},
            {'name': '游艇', 'price': 20, 'nums': 10},
            {'name': '美女', 'price': 998, 'nums': 10}
        ]
        flag = True  # 最外层循环标记
        while flag:
            my_cart_id = -1
            flag_list = True
            carlist = []
            mainlist = '========我的网上商城=======
    1.进入商城
    2.账户充值'
            print(mainlist)
            choose = input('请选择编号(1 or 2),退出请按(E or e): ')
            if choose == 'E' or choose == 'e':
                break
            else:
                if choose.isdigit() and choose == '1':
                    while flag_list:
                        goodsid = goods_list(goodslist)
                        car, flag_list, goods_id, goods_new_num, my_cart_id = cartlists(goodsid, my_cart_id)
                    my_buy(car, goods_id, goods_new_num)
                    while True:
                        my_choose = input('是否继续购物,确认请按(Y or y),退出请按(B or b): ')
                        if my_choose == 'Y' or my_choose == 'y':
                            flag = True
                            break
                        elif my_choose == 'B' or my_choose == 'b':
                            flag = False
                            break
                        else:
                            print('输入的信息不正确请重新输入')
                            continue
    
                elif choose.isdigit() and choose == '2':
                    usercenter(users)
                    recharge(users)
                    print('this is users', users)
                else:
                    print('输入的选项错误,请重新输入
    ')
  • 相关阅读:
    收集一些dos网络配置命令,从新获取ip刷新dns
    多个线程访问共享对象和数据的方式
    Oracle rownum 分页, 排序
    ORACLE中用rownum分页并排序的SQL语句
    CentOS 6.5安装MongoDB 2.6(多yum数据源)
    【编程练习】收集的一些c++代码片,算法排序,读文件,写日志,快速求积分等等
    java枚举使用详解
    PHP+MySQL动态网站开发从入门到精通(视频教学版)
    Premiere Pro CS6标准教程
    黑客攻防:实战加密与解密
  • 原文地址:https://www.cnblogs.com/godspeed034/p/7245630.html
Copyright © 2011-2022 走看看