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. ADSL和ITV

    1.ADSL和ITV两者占用的是不同的虚通道,也就是使用不同的VLAN: 2.的确上通过不同的VPI/VCI来区分ADSL和ITV在不同通道,但不会互不影响的,因为使用的还是同一条线路的宽带速度: 3 ...

  2. GNS3模拟的硬件

    Hardware emulated by GNS3 Cisco 1700 Series 1700s have one or more interfaces on the motherboard, 2 ...

  3. xming + putty remote GUI

    xming 和putty的配置网上有很多 但是在使用时发现有个问题, 记录一下. 在配置完成后,远程运行图形化程序经常会说can not open display等错误. 这有可能是因为xming的安 ...

  4. java.util.Scanner

    java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎 ...

  5. 编程精粹--编写高质量C语言代码(3):自己设计并使用断言(二)

    接着上一遍文章<<编程精粹--编写高质量C语言代码(2):自己设计并使用断言(一)>>,继续学习怎样自己设计并使用断言,来更加easy,更加不费力地自己主动寻找出程序中的错误. ...

  6. AutoCAD如何打印

    现在有一个CAD图纸,左侧为房型图,右侧为规划好之后的图纸,我只要打印右侧的东西.点击文件-打印   在打印设备中选择Default Windows System Printer,名称的下拉菜单下面有 ...

  7. Django打造大型企业官网(四)

    4.3.轮播图布局和样式 templates/news/index.html <div class="news-wrapper"> <div class=&quo ...

  8. vim note(5)

    .vimrc 的设置 $HOME/.vimrc 的普通设置,例如以下. set nocompatible "" not compatible with VI "" ...

  9. [翻译角]Headline English: A Captain Should Be Pitch Perfect at a Multitude of Skills (ESLPOD Blog)

    以下转自www.eslpod.com,翻译为本人添加.其余版权均归原网站所有. ESLPOD是一个英语学习网站,我最初知道这个网站,是因为“奶爸”<把你的英语用起来>(电子版3元)一书的推 ...

  10. [Codeforces Education Round 6E] New Year Tree

    [题目链接] https://codeforces.com/contest/620/problem/E [算法] 显然 , 一棵子树的DFS序必然为连续的一段 用线段树维护颜色数即可 [代码] #in ...