最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python如何编写购物车程序的示例代码分享

来源:动视网 责编:小采 时间:2020-11-27 14:23:27
文档

python如何编写购物车程序的示例代码分享

python如何编写购物车程序的示例代码分享:要求1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表2、允许用户根据商品编号购买商品3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4、可随时退出,退出时,打印已购买商品和余额5、在用户使用过程中
推荐度:
导读python如何编写购物车程序的示例代码分享:要求1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表2、允许用户根据商品编号购买商品3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4、可随时退出,退出时,打印已购买商品和余额5、在用户使用过程中


要求

1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表

2、允许用户根据商品编号购买商品

3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4、可随时退出,退出时,打印已购买商品和余额

5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买

7、允许查询之前的消费记录


1)编写思路

编写思路参考下面GitHub链接中的流程图

2)具体实现

# -*- coding:utf-8 -*-

# Author:Chuixin Zeng

# 导入JSON模块
import json
# 导入日期时间模块
import datetime
# 导入系统OS模块
import os

# 自定义欢迎信息
info = '''
1. 按"A"注册
2. 按"B"登录
3. 按"Q"退出
'''
# 自定义错误提示信息
_error_info = '输入有误,请检查后重新输入!'

# 定义一个_save_account函数
# 用于将购物相关信息保存到JSON文件,比如购物时间,购物历史,购物列表,账户余额,创建的新用户和现有已存在用户信息
def _save_account(database, filename='DataBase.json'):
 # 打开并可写文件,若文件已存在,则以前的内容将被清除
 # 使用with as语句的效率更高,不需要单独设置如何读文件之后再如何关闭文件,一个with as搞定所有读写关闭操作
 with open(filename,'w') as f: # f相当于一个变量,把打开并修改文件的操作赋予f
 json.dump(database,f) # json.dump是将一个Python数据类型列表进行json格式的编码解析

# 定义一个_load_database函数,用于从json文件中读取信息,默认加载的数据库是database.json文件
def _load_database(filename='DataBase.json'):
 with open(filename) as f:
 database = json.load(f) # 解码JSON数据,将一个JSON编码的字符串转换回一个Python数据结构
 return database # 返回解码后的数据

# 定义一个函数_set_shopping_time,设置并记录购物的时间,函数里面定义了一个参数account,用于保存账户信息
def _set_shopping_time(account):
 database = _load_database() # 设定要记录到哪个数据库,这里使用的是前面定义好的函数_load_database定义的database.json
 d1 = datetime.datetime.now() # 设置购物时间为当前时间
 d2 = d1.strftime('%Y-%m-%d %H:%M:%S') # 将当前时间进行格式转换
 database[account]['shopping_time'] = d2 # 将转换好的时间记录到字典里面的shopping_time键上
 _save_account(database) # 保存购物时间到数据库中,这里的数据库是指database.json文件

# 定义一个函数,用于获取已经保存过的购物时间
def _get_datetime(account):
 database = _load_database()
 data = database[account]['shopping_time']
 # 返回变量data的值,变量data保存的就是account键对应的购物时间值,这个值是从json里面解码出来后到字典里
 # 由json到Python可识别的字典数据的解码过程由_load_database函数完成
 return data

# 定义一个函数_get_shopping_history,用于查询购物历史记录
def _get_shopping_history(account):
 database = _load_database()
 history = database[account]['shopping_list']
 # 增加一个空列表,配合下边for循环将购物清单中的重复项合并
 aa = []
 for i in history:
 # 将购物车里面的shopping list和aa空列表进行对比,如果列表里面没有,就添加到列表
 # 也就意味着,如果列表已经有了就不添加了,达到了购物车去重的功能
 if i not in aa:
 aa.append(i)
 # 然后循环遍历aa列表里面的购物清单
 for j in aa:
 # 统计购买的每件商品的数量,也就是aa列表里面每件商品的数量,数量从history原始列表里面取(未去重的列表)
 count = history.count(j)
 # 统计购买商品的日期,日期就是account字典对应的商品的日期
 date = _get_datetime(account)
 # 打印购买的商品的数量、日期和商品名称
 print('您于%s购买了%s件%s' %(date,count,j))

# 定义一个函数login,用于登录系统
def _login():
 database = _load_database() # 加载数据库,使用的是前面定义好的加载数据库的函数
 blacklist = _load_database('BlackList.json') # 设置用户的黑名单列表,在列表中的用户将不允许登录到购物系统
 print('欢迎登录购物系统!') # 打印欢迎信息
 # 第一个死循环
 while True:
 account = input("请输入您的账号登录系统(按q退出):")
 if account in blacklist:
 # 如果账户在黑名单里面,则退出登录
 print("您的账号已经被锁定,请联系管理员处理!")
 _logout() # 直接调用下面定义好的_logout()函数
 # 判断如果用户输入的是q,就退出购物系统
 elif account == 'q':
 _logout()
 # 判断如果用户在数据库里面,则继续判断用户输入的密码是否正确
 # 这里使用while循环和count计数器,如果输入错误密码大于3次,则锁定账户
 elif account in database:
 count = 0
 while count < 3:
 pwd = input('请输入密码:')
 # 如果用户输入的密码和数据库保存的密码匹配
 if pwd == database[account]['pwd']:
 # 进入到死循环
 while True:
 # 首先登录成功后,先获取用户账户的余额,告诉用户还剩多少钱,余额通过_get_balance函数得到
 account_balance = _get_balance(account)
 # 高亮打印账户的余额信息
 print('您的账户余额是