购物车程序更新:

更新商家入口,实现以下功能:

1. 商家能够修改商品价格;

2. 商家能够下线商品;

3. 商家能够增加商品;

4. 商品信息存在文件中

 # -*- coding:utf-8 -*-
# LC
product_list = []
product_line = []
count = 0 with open("product_list","r") as f: #打开商家货品清单文件
for item in f:
product_line = item.rstrip().split(",") #将每行赋值给成一个列表,以“,”区分
product_list.append(product_line) #将每行的列表加入product_list列表中 print("This is your production".center(50,"-")) #打印列表
for i in product_list:
print(count,i)
count+=1 #提供增加商品,修改商品价格,删除商品功能
while True:
select = input("Please input you selection,'a' to add,'m' to modified the price,'d' to Delete,'q' to quit :")
count = 0
if select == 'a':
add_product = input("Please input new product name:")
add_price = input("Please input new product price:")
new_product = [add_product,add_price] #将新添加的商品赋值成列表
product_list.append(new_product) #向产品清单列表中插入新添加的商品
with open("product_list","a") as f_add: #将添加的商品写入文件中,以追加的方式
f_add.writelines(product_list[-1][0]+","+product_list[-1][1]+"\n")
print("\033[1;31mThis is your new production list\033[0m".center(50,"-"))
for i in product_list: #打印新的产品清单
print(count,i)
count+=1
elif select == 'm':
modify_index = input("Please input index of the item which you want to modify:") #输入要修改价格的产品序号
modify_index = int(modify_index)
length = product_list.index(product_list[-1]) #判断输入的修改价格产品序号是否再产品清单范围
if 0 <= modify_index <= length:
new_price = input("Please input the new price:") #输入新的价格
product_list[modify_index][1]=new_price #将新的价格修改至产品清单列表中
with open("product_list","w") as f_modify: #想修改的产品清单列表写入文件中
for i in product_list:
f_modify.writelines(i[0]+","+i[1]+"\n")
print("\033[1;31mThis is your new production list\033[0m".center(50,"-"))
for i in product_list: #打印新的产品清
print(count,i)
count+=1
else:
print("Your select is invalid, Please try again!") #如果输入的序号不在范围内,则报错重新来
elif select == 'd': #删除商品
delete_index = input("Please input index of the item which you want to delete:")
delete_index = int(delete_index)
length = product_list.index(product_list[-1]) #判断输入的删除序号是否再产品清单范围
if 0 <= delete_index <= length:
product_list.pop(delete_index) #从产品清单中删除制定的产品
with open("product_list","w") as f_del:
for i in product_list:
f_del.writelines(i[0]+","+i[1]+"\n") #将新的产品清单写入文件中
print("\033[1;31mThis is your new production list\033[0m".center(50,"-"))
for i in product_list:
print(count,i)
count+=1
else:
print("Your select is invalid, Please try again!") elif select == "q":
print("You have been quit!")
break
else:
print("invalid input,please input again!")

商家入口程序

pic,2
rice,3
water,32
phone,5000
pia,300

货品清单文件

更新用户购买程序,实现以下功能:

1. 用户第一次购买输入薪资;

2. 用户购买商品信息写入文件;

3. 用户再次购买先读取之前的购买清单文件,查看余额;

 # -*- coding:utf-8 -*-
# LC
import os
product_list = [] #定义商品清单列表
product_line = [] #定义商品清单中每行的列表
user_buy_list = [] #定义用户已经购买商品列表
user_buy_product = [] #定义用户购买单个商品的列表
with open("product_list","r") as f_production: #读取商品清单列表
for item_production in f_production:
product_line = item_production.rstrip().split(",")
product_list.append(product_line) if os.path.getsize("shopping_list") == 0: #判断是否为第一次消费,如果消费清单文件为空,则第一次消费
salary = input("Please input your salary:")
balance = int(salary) #将余额定义为薪资
else:
length = len(open("shopping_list","rU").readlines()) #如果不是第一次消费,计算消费清单文件行数,提取消费列表
count = 0
with open("shopping_list", "r") as f_shopping_list:
for shopping_item in f_shopping_list:
count +=1
if 2 <= count <= length-2: #去除第一行和最后两行,将消费清单中已购买的商品提取出来
shopping_item = shopping_item.strip().split() #将购买的商品转换为列表,包含商品,单价,数量
user_buy_list.append(shopping_item) #将已经购买的商品记录至用户消费清单列表中
elif count == length:
shopping_item = shopping_item.strip().split()
balance = int(shopping_item[-1]) #如果非第一次消费,则余额为消费清单文件中的余额,提取出来
while True:
print("This is the production list".center(50, "-"))
count = 0
for i in product_list:
print(count, i)
count += 1
user_select = input("Your balance is %d, 's' to start to shopping,'q' to quit : "%(balance))
if user_select == 's':
user_buy_product = []
user_select_index = input("Please select the index of the one you want to buy:") #输入要购买的商品
user_select_count = input("Please input the number how many you want to buy:") #输入要购买的商品数量
user_select_index = int(user_select_index)
user_select_count = int(user_select_count)
unit_price = int(product_list[user_select_index][1]) #要购买的商品单价
product_price = unit_price * user_select_count #购买的商品金额,即单价乘以总价
if product_price <= balance:
user_buy_product.append(product_list[user_select_index][0]) #将购买的商品的名称插入新的单个列表中
user_buy_product.append(product_list[user_select_index][1]) #将购买的商品的单价插入新的单个列表中
user_buy_product.append(str(user_select_count)) #将购买的商品的数量插入新的单个列表中
user_buy_list.append(user_buy_product) #将新购买的商品,包含名称,单价,数量插入用户购买清单中
balance = balance - product_price #将金额出去已经购买的商品金额,以免余额不足
else: #购买的商品和数量,余额不足
print("\033[1;31mYour choice is out of your money!\033[0m")
continue
elif user_select == 'q':
break
else:
print("invalid input ,try again")
continue #统计用户购买商品的总金额和消费余额
total_price = 0
for i in user_buy_list:
user_buy_product_price = int(i[1]) * int(i[2]) #用户购买的单个商品的总额,即单件商品的单价乘以数量
total_price = total_price + user_buy_product_price #统计消费总金额
total_consumption = ["Total_Consumption:"]
balance_list = ["Your balance:"] #消费清单上记录余额信息
balance_list.append(balance)
total_consumption.append(total_price)
user_buy_list.append(total_consumption) #将总消费金额信息插入用户消费清单中
user_buy_list.append(balance_list) #将余额信息插入用户消费清单中 #将用户购买的商品写入消费清单文件中,并记录总价和余额
with open("shopping_list","w") as f_buy:
f_buy.writelines("product".center(15,"-")+"price".center(15,"-")+"count".center(15,"-")+"\n")
for i in user_buy_list:
if len(i) == 3: #将商品写入
f_buy.writelines(str(i[0]).center(15," ")+str(i[1]).center(15," ")+str(i[2]).center(15," ")+"\n")
else: #将余额和消费总额写入
f_buy.writelines(str(i[0]).ljust(30, " ") + str(i[1]).center(15, " ") + "\n") #打印最终购买清单
print("This is your purchase list".center(45,"-"))
with open("shopping_list","r") as f_read:
for i in f_read:
print(i.strip("\n"))

用户端程序

购买清单文件

----product---------price----------count-----
pic 2 20
rice 3 50
water 32 300
phone 5000 2
pia 300 50
phone 5000 2
phone 5000 1
Total_Consumption: 49790
Your balance: 210

购买清单文件

python---购物车---更新的更多相关文章

  1. 简单的python购物车

                 这几天,一直在学python,跟着视频老师做了一个比较简单的python购物车,感觉不错,分享一下 products = [['Iphone8',6888],['MacPro ...

  2. python 购物车小程序

    python 购物车小程序 功能要求:1.启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. ...

  3. python购物车小案例

    python购物车小案例# 案列描述:有一个小型水果店里面有水果(苹果:¥8/kg,香蕉:¥5/kg,芒果:¥15/kg,葡萄:¥12/kg),客户带了100元钱进店选购水果.# 1.客户输入相应序号 ...

  4. Python字符串更新

    Python字符串更新:截取字符串的某一部分 和 其他字符串进行拼接. 注:可以修改字符串的值,但修改的不是内存中的值,而是创建新的字符串. 1.使用字符串常量进行更新: # 使用字符串常量 strs ...

  5. python 购物车和三级菜单

    程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...

  6. 如何在Anaconda中把python环境更新更高版本

    把Anaconda中的python从3.5.5更新到3.6版本,不想卸载重新安装.办法如下: 开始->Anaconda Promot 在Anaconda Promot中,输入: conda up ...

  7. 5th,Python购物车模拟

    1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时退出,退 ...

  8. Python - 常用更新命令以及常见库安装

    库的安装方式一般有两种: 一. pip直接安装(或使用豆瓣源) pip install scrapy pip install -i https://pypi.douban.com/simple/ sc ...

  9. Python购物车

    product_list = [ ['Iphone',5888], ['Mac Air',8000], ['XiaoMi',19.9], ['coffee',30], ['Tesla',820000] ...

  10. python 购物车小程序(列表、循环、条件语句)

    goods = [ ['iphone6s', 5800], ['mac book', 9000], ['coffee', 32], ['python book', 80], ['bicyle', 15 ...

随机推荐

  1. UNIX网络编程——shutdown 与 close 函数 的区别

    假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据 ...

  2. ASP.NET实现网页版小优盘

    今天看到了一篇不错的文章,就拿来一起分享一下吧. 实现的是文件的上传与下载功能. 关于文件上传: 谈及文件上传到网站上,首先我们想到的就是通过什么上传呢?在ASP.NET中,只需要用FileUploa ...

  3. Android官方命令深入分析之etc1tool

    etc1tool是一个命令行工具,可以将PNG图像压缩为etc1标准,并且可以进行解压缩. 用法: etc1tool infile [--help | --encode | --encodeNoHea ...

  4. 【一天一道LeetCode】#66. Plus One

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  5. Java虚拟机结构

    一.JVM主要的结构如下: 二.各个区域功能介绍 1).方法区(Method Area):         (1)用于存储虚拟机加载的类信息.常量.静态变量等,是各个线程共享的内存区域:       ...

  6. android 4G产品4G网络问题记录

    电信.联通.移动切换到LTE_4G都不能通话(提示无法连接到网络)能正常上网,电信EVDO_3G不能通话(提示无法连接到网络)能正常上网这个是正常的,LTE只是针对上网,EVDO也是数据. 目前移动4 ...

  7. 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

    根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...

  8. OpenCV由汉字生成图片(透明)----可以对抗论文查重!!!

    今天听说很多同志们写毕业论文重复率过高的问题,大牛说用图片代替字就行了,我就想用OpenCV实现一下看看能不能搞,果不其然还是可以的!!!主要的难点在于普通格式的图片背景不透明,需要使用背景透明的pn ...

  9. TrueType字体的后缀名解释

    OpenType标准定义了OpenType文件名称的后缀名.包含TureType字体的OpenType文件后缀名为.ttf,包含PostScript字体的文件后缀名为.OTF.如果是包含一系列True ...

  10. BASE64Decoder小解

    BASE64Decoder小解 Base64 是网络上最常见的用于传输8Bit 字节代码的编码方式之一,大家可以查看RFC2045 -RFC2049 ,上面有MIME 的详细规范. Base64 要求 ...