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

要求

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

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

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

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

立即学习“Python免费学习笔记(深入)”;

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 = price:                                        # 调用_set_balance函数,计算购买后的账户余额是多少                                        # #计算方法在_set_balance函数里面                                        _set_balance(account,price)                                        # 提示用户已经成功购买商品                                        print('您成功购买%d件商品:%s!'% (num,p_name))                                        # 调用_set_shopping_list函数,将购买的商品列表保存到json文件中                                        _set_shopping_list(account,p_name,num)                                        # 定义account_balance变量,通过使用_get_balance函数重新获取账户的余额信息                                        account_balance = _get_balance(account)                                        # 打印告诉用户,购买完商品之后剩下多少钱                                        print('您目前的账户余额为[31m%d[0m元' % account_balance)                                        # 调用_set_shopping_time函数,将购物时间写入到json文件                                        _set_shopping_time(account)                                        # 退出当前的循环,到上一级循环,用户可以选择是否继续购物                                        break                                    # 如果用户的账户余额小于商品的金额,则告诉用户余额不足,无法购买                                    else:                                        print('您的账户余额不足,请您及时充值!')                                        g = input("充值输入t,返回上一级输入b,退出输入q':")                                        if g == 'q':                                            _logout()                                        if g == 'b':                                            break                                        if g == 't':                                        # 这里我增加了一个调用_top_up函数,账户余额不住的时候,马上提示用户充值                                            _top_up(account)                                # 如果用户购买商品时输入的数量不是纯数字类型,则调用_error_info函数,输出错误信息                                else:                                    print(_error_info)                        # 如果用户输入的购买的商品名称不正确,则调用_error_info函数,输出错误信息                        else:                            print(_error_info)                # # 如果用户输入的购买的商品分类信息不正确,则调用_error_info函数,输出错误信息                else:                    print('输入错误,请重新输入!')        # 如果用户输入的不是商品分类,而是q,则调用_logout函数退出登录        elif choose == 'q':            _logout(account)        # 如果用户输入的信息既不在商品分类中,也不是q,则告诉用户重新输入        else:            print('输入错误,请重新输入!')#def _add_user():    # 首先调用_load_database函数,将json文件解码出来,放到database变量    database = _load_database('DataBase.json')    # 执行while循环    while True:        # 提供交互式界面,让用户输入要创建的用户名称        username = input('请输入您的账户名称:').strip()        # 判断是否存在重名的用户,如果有,则告诉用户,继续执行while循环,让用户输入        if username in database:            print('用户名已经存在,不需要重复创建!')        # 如果没有,则用户输入信息有效,中断while循环        else:            break    # 执行while循环    while True:        # 让用户输入两次密码        pwd1 = input('请输入您的账户密码:').strip()        pwd2 = input('请再次输入您的账户密码:').strip()        # 对两次输入的密码信息进行比对        # 如果面膜不正确,则继续执行while循环让用户重新输入        if pwd1 != pwd2:            print('2次输入的密码不通,请重新输入')        # 如果输入的密码是正确的,则告诉用户创建账户成功        else:            print('创建用户成功,开始购物吧!')            # 把用户创建的账户和密码信息保存到database字典中            # username为用户账号,pwd1为用户密码,balance为账户余额,shopping_list为购物清单,shopping_time为购物时间            database[username] = {'pwd':pwd1,'balance':0,'shopping_list':[],'shopping_time':None}            # 调用_save_account函数,将创建好的账户信息和账户的初始余额、初始购物时间信息保存到json文件            _save_account(database)            # 退出while循环            break# 设置默认变量account = None来判定账号是否已经登录,如果没有登录就退出,则不打印购物信息# 如果已经登录过,则打印购物历史信息def _logout(account=None):    if account != None:        _get_shopping_history(account)    exit('感谢您来购物!')# 定义一个main函数,用于初始登录界面的判断def main():    # 执行while循环    while True:        # 打印登录提示信息,info信息定义在程序的开头,是一个字符串类型        print(info)        # 提供交互式界面,让用户输入指令信息        command = input('请输入指令:').strip()        # 如果用户输入的是大写的A,则调用_add_user函数,创建新用户        if command.upper() == 'A':            _add_user()        # 如果用户输入的是大写的B,则调用_login函数,进行登录        elif command.upper() == 'B':            _login()        # 如果用户输入的是Q,则调用_logout函数,退出登录        elif command.upper() == 'Q':            _logout()        # 如果用户没有按照提示信息进行输入,则告诉用户重新输入,会重新执行while循环        else:            print('输入错误,请重新输入')# 执行main函数if __name__ == '__main__':    main()

登录后复制

以上就是python如何编写购物车程序的示例代码分享的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2267982.html

(0)
上一篇 2025年2月27日 10:27:14
下一篇 2025年2月21日 13:29:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python实现购物车的简单实例分享

    下面小编就为大家带来一篇python初学时购物车程序练习实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 废话不多说,直接上代码 #Author:Lancy Wuproduct_list=[ (‘I…

    编程技术 2025年2月27日
    200
  • Python实现购物车程序

    这篇文章主要为大家详细介绍了python实现购物车程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了程序:Python购物车程序,具体内容如下 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品…

    编程技术 2025年2月27日
    200
  • python购物车程序代码

    这篇文章主要为大家详细介绍了python购物车程序的简单代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python购物车程序的具体代码,供大家参考,具体内容如下 代码: ””’ Created on 201…

    2025年2月27日
    200
  • Python实现购物车购物小程序

    这篇文章主要为大家详细介绍了python实现购物车购物小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 概要 按理说,我们入门的第一个小程序都应该是Hello World。因为比较简单,我这也就不做过多的演示 了。 下面是我写的一个…

    2025年2月27日
    200
  • 讲解Python 基于文件操作实现购物车

    免费学习推荐:python视频教程 Python 基于文件操作实现购物车 学习Python有一段时间了,想着需要找些东西写一下来巩固下基础,看到了购物车然后想着能不能利用已经学过的实现以下功能。但是比较简单的实现也没啥意义,只用几个循环和判…

    2025年2月26日
    200
  • 如何利用Python编写希尔排序算法?

    如何利用Python编写希尔排序算法? 希尔排序(Shell Sort)是一种改进的插入排序算法,它通过比较相距一定间隔的元素来移动元素,从而减少了移动的次数。希尔排序的核心思想是将待排序的元素按照一定的间隔分组,然后对每个分组进行插入排序…

    2025年2月26日
    200
  • 如何用Python编写Tarjan算法?

    如何用Python编写Tarjan算法? Tarjan算法是一种基于深度优先搜索(DFS)的图算法,用于求解强连通分量(SCC)问题。本文将介绍如何用Python编写Tarjan算法,并附上具体的代码示例。 Tarjan算法的基本思想是通过…

    2025年2月26日
    200
  • 如何用Python编写支持向量机算法?

    如何用Python编写支持向量机算法? 支持向量机(Support Vector Machine,SVM)是一种用于二分类和回归问题的机器学习算法。它的主要目标是找到一个最优超平面,将不同类别的数据点尽可能地分开,并且使边界上的数据点到超平…

    2025年2月26日
    200
  • 如何用Python编写深度优先搜索算法?

    如何用Python编写深度优先搜索算法? 深度优先搜索(Depth-First Search,简称DFS)是一种常用的图遍历算法。在深度优先搜索中,从起始节点开始,不断探索邻接节点,直至无法继续探索,然后回退到上一节点,继续遍历还未探索的邻…

    2025年2月26日
    200
  • 如何用Python编写动态规划算法?

    如何用Python编写动态规划算法? 动态规划算法是一种常用的问题求解方法,它通过将问题分解为子问题,并将子问题的解保存起来,从而避免重复计算,提升算法效率。Python作为一种简洁易读的编程语言,非常适合用来编写动态规划算法。本文将介绍如…

    2025年2月26日
    200

发表回复

登录后才能评论