热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:python实现购物车程序

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python实现购物车程序相关的知识,希望对你有一定的参考价值。使用python3实现的简单购物车程序

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python实现购物车程序相关的知识,希望对你有一定的参考价值。


使用python3实现的简单购物车程序

用户入口
1、第一次需要输入自己的金额,下次购买会记录上一次所剩的余额
2、用户只需要输入对应商品前面的序号即可将商品添加进购物车
3、能够记录用户购买商品的历史记录,并每次退出程序后显示总的购买情况

商家入口
1、商家需要通过账号验证进入
2、商家能够对商品进行添加以及修改商品的价格

可以自行考虑一些其余的功能添加上去

 


1 #!/usr/bin/env python
2 #coding:utf-8
3
4 import os
5
6 def text_save(filename, data): ##定义函数将列表存入到文件里面
7 file = open(filename,w)
8 for i in range(len(data)):
9 s = str(data[i]).replace([,‘‘).replace(],‘‘)
10 s = s.replace("",‘‘).replace(,,‘‘) +

11 file.write(s)
12 file.close()
13
14 size = os.path.getsize(shopping.txt) #判断存商品的文件是否为空,如果为空,则使用自定义的商品初始值
15 if size == 0:
16 shopping = [[phone,2800],[snacks,200],[watch,1200],[cloths,500]]
17 else:
18 shopping = []
19 with open(shopping.txt,r) as f:
20 for data in f.readlines():
21 shopping.append(data.split( ))
22 for data2 in range(len(shopping)):
23 shopping[data2][1] = shopping[data2][1].rstrip(
)
24 shopping[data2][1] = int(shopping[data2][1])
25
26
27 shopping_list = [] #定义用户购买的商品列表
28
29
30 with open(shopping_cart.txt,r) as f1: #打开存取用户商品的文件,并将已购买的商品读取保存到列表里
31 for j in f1.readlines():
32 shopping_list.append(j.split( ))
33 for j2 in range(len(shopping_list)):
34 shopping_list[j2][1] = shopping_list[j2][1].rstrip(
)
35
36
37 with open(user.txt,r) as f: #需要事先在文件里面写上验证的用户,这里只定义了一个admin用户,用于区分是用户还是商家
38 userlist = f.readlines()
39 for i in range(len(userlist)):
40 userlist[i] = userlist[i].strip(
)
41
42
43 role = input(if or not you are admin?(y|n):) #简单判断是进入到用户入口还是商家入口
44
45 #用户入口
46 if role == n:
47 size = os.path.getsize(salary.txt) #若保存工资的文件为空,则需要用户手动输入自己的余额,否则直接读取里面保存的余额
48 if size == 0:
49 mOney= input(please input your RMB:)
50 else:
51 with open(salary.txt,r) as f3:
52 mOney= f3.read()
53 flag1 = False
54 if money.isdigit():
55 mOney= int(money)
56 while not flag1:
57 for index,item in enumerate(shopping):#获取商品的列表以及对应的下标,用户选择对应的序号即可添加商品到购物车
58 print(index,item)
59 product_choice = input("你需要选择什么商品>>>")
60 if product_choice.isdigit():
61 product_choice = int(product_choice)
62 if product_choice and product_choice >=0:#判断选择购买的商品是否在列表里存在
63 product_item = shopping[product_choice]
64 if product_item[1] <= money: #判断余额是否足够
65 shopping_list.append(product_item)
66 money -= product_item[1]
67 print("add [%s] into your shopping cart and Your remaining balance is 33[31;1m%s33[0m" %(product_item[0],money))
68 else:
69 print("33[41;1m你的余额不足,请及时充值...33[0m")
70 else:
71 print("没有这个商品,请选择其余物品...")
72
73 elif product_choice == q:
74 print(‘‘‘
75 ----------------------
76 你的购物车当前的商品有:‘‘‘)
77 for i in shopping_list:
78 print(i)
79 print("your remaining balance is",money)
80 flag1 = True
81 else:
82 print("invalid input")
83 with open(salary.txt,w) as f4:
84 f4.write(str(money))
85 text_save(shopping_cart.txt,shopping_list)
86
87
88 #商家入口
89 elif role == y:
90 flag = False
91 i = 0
92 while not flag:
93 user = input(please input your admin user:)
94 print(user,type(user))
95 if user in userlist:
96 while not flag:
97 i = 0
98 change = input("do you want to modify shopping?(y|n):")
99 if change == y:
100 while not flag:
101 change1 = input("add shopping(1) or modify shopping price(2),(1|2|q):") #通过判断商家是需要添加商品还是修改商品价格,或者可以直接退出
102 if change1 == 1:
103 add_shop = input(please input shopping that you want to add!)
104 shop_price = input(please input shopping price!)
105 shopping.append([add_shop,shop_price])
106 elif change1 == 2:
107 for index1,item1 in enumerate(shopping): #获取到需要修改的商品对应的列表和下标
108 print(index1,item1)
109 mod_shopping = input(what shopping price do you want to modify?)
110 if mod_shopping.isdigit(): #判断输入的是否为数字,并且将字符串类型转换为int
111 mod_shopping = int(mod_shopping)
112 change_shopping = shopping[mod_shopping][0]
113 mod_price = input(how much do you want to change?)
114 if mod_price.isdigit(): #默认输入的价格是str类型,需要转换为int
115 mod_price = int(mod_price)
116 shopping[mod_shopping] = [change_shopping,mod_price]
117 elif change1 == q:
118 print("exiting...")
119 flag = True
120 else:
121 print("invalid option...")
122 elif change == n:
123 print("正在退出管理商品终端...")
124 flag = True
125 else:
126 pass
127 else:
128 print(您的验证错误,请重新输入正确的用户:)
129 i = i+1
130 if i >= 3:
131 print(你已经连续输错了三次,将自动退出。。)
132 flag = True
133 text_save(shopping.txt,shopping)
134
135 else:
136 print(invalid option...)

 







推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
author-avatar
寂寞已成伤兑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有