题目要求:

优化版的购物车

用户入口:
1.商品的信息存到文件里
2.已购商品,余额记录
商家入口:
1.可以添加商品 2.修改商品价格

Read Me:继上次简单购物车的实现,有再一次的升级优化了下,现实现以下几个功能:

1.有客户操作和商家操作,实现,客户可以买东西,当金额不足提醒,最后按q退出,打印购物车列表

2.商家可以添加操作、修改商品价格操作

3.此次所有的商品信息存储在product.txt文件中例:Watch: 1000,这样的形式存在。

4. 运行此程序需要有商品信息的txt文件如上,按提示操作即可

思维导图:

代码如下:

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
#2018.02.06
#path python3.5
#优化版的购物车
#用户入口:
#1.商品的信息存到文件里
#2.已购商品,余额记录
#商家入口:
#1.可以添加商品 2.修改商品价格
#存储商品列表
import fileinput
product_list = []
f = open("product.txt","r")#打开文件
for line in f.readlines():
line =line.strip()#去掉最后一个换行符
index,item = line.split(":")#以冒号分割得到前后两个数据
product_list.append((index,item))#添加的数据
f.close() def print_product_list():
for index,item in enumerate(product_list):
print(index,item)
#用户入口
#用户购物
def user_shopping():
salary = input("请输入你的薪水:")
print_product_list()
if salary.isdigit():
salary = int(salary)
shopping_list = []#存放用户购物车清单
while True:
option = input("喜欢那个就买哪个(对应的标号):")
if option.isdigit():
option = int(option)
if option >= 0 and option <= len(product_list):
p_item = product_list[option]#用户选择的商品
#print(product_list)
#print(p_item[1])
c_num = int(p_item[1])
if salary >= c_num:
shopping_list.append(p_item)
salary -= c_num
print("添加购物车成功,你的余额还有%s"%(salary))
else:
print("你的余额不足,只剩%s元"%(salary))
else:
print("输入错误,请重新输入!")
elif option == "q":
print("----------------购物清单---------------")
for s_list in shopping_list:
print(s_list)
print("你的余额为%s"%(salary))
print("..........exit.........")
exit()
else:
print("无效的输入") #商家入口
#商家添加商品
def add_product():
name_of_product = input("请输入你要添加的商品名字:")
price_of_product = input("请输入你要添加商品的价格:")
f = open("product.txt","a")
f.write(str("\n"+name_of_product)+": %s"%(price_of_product))
f.close()
print("添加成功!\nexit----------") #修改商品价格
def change_price():
print_product_list()#打印商品列表
choice = input("请输入你的选择:")
#name_of_change = input("请输入你要改变的商品名字")
price_of_change = input("请输入你要改变商品的价格:")
if choice.isdigit():
choice = int(choice)
if choice >=0 and choice <= len(product_list):
p_item = product_list[choice]#选择的商品
#c_num = int(p_item[1])#转换成int类型
for line in fileinput.input("product.txt",inplace = "%s"%(choice)):#对输入的选择行进行修改
line = line.replace("%s"%(p_item[1]),"%s"%(price_of_change)).strip()
print(line)
exit("修改成功!")
else:
print("输入无效")
else:
if choice == "q":
exit("退出") if __name__ == "__main__":
print("--------------------------"
"--------------------------"
"\n"
" 欢迎进入购物菜单 "
"\n"
"\n"
"商家请按b,用户请按c\n"
"--------------------------"
"--------------------------")
c_num = input("请输入你的选择:")#使用者选择
if c_num == "b":
print("--------------------------"
"--------------------------"
"\n"
" 欢迎进入商家界面 "
"\n"
"\n"
"添加商品请按a,修改价格请按c\n"
"--------------------------"
"--------------------------")
c_num2 = input("请输入你的选择:")
if c_num2 == "a":
#实现添加商品功能
add_product()
if c_num2 == "c":
#实现商品价格修改功能
change_price()
else:
print("输入有误!")
if c_num == "c":
print("--------------------------"
"--------------------------"
"\n"
" 欢迎进入用户界面 "
"\n"
"\n" "--------------------------"
"--------------------------")
#购物功能
user_shopping()
else:
print("输入有误程序退出!")

结束:有什么错误欢迎指出来,欢迎打扰  -_-

python之作业--------购物车优化的更多相关文章

  1. Python之作业购物车

    作业之购物车优化 购物车优化要求如下: 用户入口: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就 ...

  2. python练习_购物车(简版)

    python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...

  3. Python 实例2—购物车

    老男孩教学学习笔记 """启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒可随机退出,退出 ...

  4. Hadoop hadoop(2.9.0)---uber模式(小作业“ubertask”优化)

    前言: 在有些情况下,运行于Hadoop集群上的一些mapreduce作业本身的数据量并不是很大,如果此时的任务分片很多,那么为每个map任务或者reduce任务频繁创建Container,势必会增加 ...

  5. Python性能分析与优化PDF高清完整版免费下载|百度云盘

    百度云盘|Python性能分析与优化PDF高清完整版免费下载 提取码:ubjt 内容简介 全面掌握Python代码性能分析和优化方法,消除性能瓶颈,迅速改善程序性能! 对于Python程序员来说,仅仅 ...

  6. python第七天-作业[购物车]

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

  7. Python培训12期-day2作业-购物车

    #!/usr/bin/env python import sys import os import getpass 商品={ '图书': { "<Puppet实战>": ...

  8. python作业购物车(第二周)

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

  9. python基础day2作业:购物车

    #功能:1.可注册账号2.登录买家账号3.可查询编辑购物车里商品4.可以余额充值5.可提示余额不足6.购物车结算 #使用:1.第一次使用先注册账号填写账号金额2.账号金额信息保存在buyer_acco ...

随机推荐

  1. 在HTML页面中加载js文件和css文件的方法

    1.在HTML页面加载js文件的方法: function loadScriptFile(filePath){ var script = document.createElement("scr ...

  2. python解析域名

    #coding:utf-8 import socket def URL2IP(): for oneurl in urllist.readlines(): url=str(oneurl.strip()) ...

  3. deeplearning.ai 卷积神经网络 Week 1 卷积神经网络 听课笔记

    1. 传统的边缘检测(比如Sobel)手工设计了3*3的filter(或者叫kernel)的9个权重,在深度学习中,这9个权重都是学习出来的参数,会比手工设计的filter更好,不但可以提取90度.0 ...

  4. JavaWeb(二)cookie与session的应用

    前言 前面讲了一堆虚的东西,所以这篇我们来介绍一下cookie和session的应用. 一.使用cookie记住用户名 1.1.思路介绍 1.2.实现代码 1)LoginServlet package ...

  5. linux(四)之元字符

    一直觉得linux是一个非常高深的东西,但是慢慢学过来其实就是一堆一堆的命令执行,让一个程序运行的结果. 只有你有毅力去学习,并且系统的去学习我相信没有什么恶意难道自己的.接下来我们一下来感受一下li ...

  6. bzoj:4762: 最小集合

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4762 mark一下,有空要好好弄懂 #include<cstdio> #inc ...

  7. Gym 100952B&&2015 HIAST Collegiate Programming Contest B. New Job【模拟】

    B. New Job time limit per test:1 second memory limit per test:64 megabytes input:standard input outp ...

  8. LightOJ DNA Prefix(字典树+dfs)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121897#problem/F F - DNA Prefix Time Limit:200 ...

  9. Choose the best route(最短路)dijk

    http://acm.hdu.edu.cn/showproblem.php?pid=2680 Choose the best route Time Limit: 2000/1000 MS (Java/ ...

  10. Sass嵌套

    Sass 中还提供了选择器嵌套功能,但这也并不意味着你在 Sass 中的嵌套是无节制的,因为你嵌套的层级越深,编译出来的 CSS 代码的选择器层级将越深,这往往是大家不愿意看到的一点. 选择器嵌套为样 ...