博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实现购物车程序
阅读量:4355 次
发布时间:2019-06-07

本文共 5846 字,大约阅读时间需要 19 分钟。

使用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(',','') +'\n' 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('\n') 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('\n') 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('\n') 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 < len(shopping) 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 \033[31;1m%s\033[0m" %(product_item[0],money)) 68                     else: 69                         print("\033[41;1m你的余额不足,请及时充值...\033[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(): #判断输入的是否为数字,并且将字符串类型转换为int111                                 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类型,需要转换为int115                                 mod_price = int(mod_price)116                             shopping[mod_shopping] = [change_shopping,mod_price]117                         elif change1 == 'q':118                             print("exiting...")119                             flag = True120                         else:121                             print("invalid option...")122                 elif change == 'n':123                     print("正在退出管理商品终端...")124                     flag = True125                 else:126                     pass        127         else:128             print('您的验证错误,请重新输入正确的用户:')129             i = i+1130             if i >= 3:131                 print('你已经连续输错了三次,将自动退出。。')132                 flag = True133     text_save('shopping.txt',shopping)134 135 else:136     print('invalid option...')

 

转载于:https://www.cnblogs.com/wujiest/p/9693786.html

你可能感兴趣的文章
Spring boot 集成Solr
查看>>
.Net互操作2
查看>>
项目中的回车搜索
查看>>
poj 3083 Children of the Candy Corn
查看>>
正则表达式基本语法详解
查看>>
qt 数据库操作总结
查看>>
[ 总结 ] vsftpd 虚拟用户配置
查看>>
win7 解决git clone 连接被拒绝—hosts文件过期
查看>>
properties配置文件的读取和写入
查看>>
最小生成树的Kruskal算法
查看>>
设计模式之-依赖倒置原则
查看>>
luoguP3391[模板]文艺平衡树(Splay) 题解
查看>>
(数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
查看>>
angular CLI 安装
查看>>
函数传参-操作多组图片切换
查看>>
Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)...
查看>>
解决vue项目打包后背景图片找不到的问题
查看>>
数据结构(C语言版)-C语言和C++相关补充
查看>>
第 21 章 工具箱指南
查看>>
css实现背景半透明文字不透明的效果
查看>>