import os
goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]
# 基本需求:75%
# 1. 启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
# 2. 允许用户根据商品编号购买商品
# 3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
# 4. 可随时退出,退出时,打印已购买商品和余额
# 5. 在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
#
# 升级需求:10%
# 1. 用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
# 2. 允许查询之前的消费记录
# account_data = {
#     "shopping_list": [],
#     "account": ["alex", "abc123", 0],
#     "blance": 8000
# }
将用户的账号,密码和其他信息单独存入到一个文件夹中;为了防止用户数据发生错误,每个用户的信息用单独的一个.txt文件存放。
用户信息存放格式如下:
 {
    "shopping_list": [],
    "account": ["mary", "abc", 0],
    "blance": 12000
}
 
python程序代码如下:
username = input("Username:").strip()
password = input("Password:").strip()
account_filename = "account/%s" % username   #用户信息存放在account文件夹下面
if os.path.isfile(account_filename):
    f = open(account_filename, "r")  # 读取文件名称
    account_data = eval(f.read())     #读取文件数据
    if account_data["account"][1] == password:
        while True:
            for index, i in enumerate(goods):   # 枚举商品
                print(index, i["name"], i["price"])
            choice = input("请选择商品:").strip()
            if choice.isdigit():
                choice = int(choice)
                if 0 <= choice < len(goods):
                    # 取出商品,判断金额够不够
                    p = goods[choice]
                    if p["price"] <= account_data["blance"]:  # 买得起
                        account_data["shopping_list"].append(p)
                        account_data["blance"] -= p["price"]
                        print("已把%s加入购物车,当前余额为\033[31;1m%s\033[0m" % (p, account_data["blance"]))
                    else:
                        print("余额不足,请有钱了在来买东西")
                else:
                    print("商品不存在")
            elif choice == "q":
                print("------shopping list-------")
                for i in account_data["shopping_list"]:
                     print(i)
                f = open(account_filename, "w")
                f.write(str(account_data))
                f.close()
                print("余额还有%s" % account_data["blance"])
                exit("欢迎再次光临")
    else:
        print("密码错误!")
else:
    print("用户不存在")

Python_购物车问题的更多相关文章

  1. python_购物车程序

    #需求1.启动程序后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4.可随时退出,退出时,打印已购买商品和余额 #先定义 ...

  2. python_购物车

    流程图  实现方式 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog__ = 'http://www.cnblogs.com/2bjiuji ...

  3. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  4. session实现购物车

    为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...

  5. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  6. PHP之购物车的代码

    该文章记录了购物车的实现代码,仅供参考 book_sc_fns.php <?php include_once('output_fns.php'); include_once('book_fns. ...

  7. 使用session页面控制登录入口及购物车效果的实现

          由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只 ...

  8. python学习笔记(列表、元组、购物车实例)

    一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...

  9. 简单实用angular.js购物车功能

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. noip 2011

    铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺 ...

  2. Same Tree (二叉树DFS)

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  3. Ubuntu16.04安装deb文件时提示:此软件来自第三方且可能包含非自由组件

    解决方式: 1.在Ubuntu软件中心安装GDebi. 2.安装好之后,选择这个要安装的deb文件右键,打开方式选择GDebi,然后输入管理员密码等待安装,期间如果不行需要重试几次. 3.另外的方法, ...

  4. Nginx与HAProxy的区别

    对于做软负载,我们都知道主流的方案有LVS.Haproxy.Nginx!那么对于Haproxy和Nginx,我们如何选择呢?回答这个问题之前,我根据个人使用经验来讲下它们的特点! Haproxy特点 ...

  5. NA交换②

    虚拟局域网VLAN的核心目的:     将一个大的网络划分为小的网络,也称为网络分片(Segementation):一个VLAN对应着一个广播域,最好对应一个网络子网(为VLAN间的路由作准备).   ...

  6. Apple Swift编程语言新手教程

    文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程 ...

  7. Fragment进阶(五)-----&gt;监听fragment回退事件

    activity_main.xml <? xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  8. jquery 页面滚动tab自动定位,tab与内容对应

    直接上源码,基于jquery写的,可以直接跑起来. 原理是先计算出页面元素对应的高度.页面滚动时计算tab对应的高端区间,设置具体的tab.欢迎指正 下载地址 <!DOCTYPE html> ...

  9. Python按行输出文件内容具体解释及延伸

    下面两端測试代码分别为笔者所写,第一段为错误版本号.后者为正确版本号: #! /usr/bin/python2.7 try:     filename = raw_input('please inpu ...

  10. [Unity-21] Prefab具体解释

    1.什么是Prefab? Prefab又被称为预设,以下部分来自官网:预置是一种资源类型--存储在项目视图中的一种可反复使用的游戏对象.预置能够多次放入到多个场景中. 当你加入一个预置到场景中,就创建 ...