python之作业--------购物车优化
题目要求:
优化版的购物车
用户入口:
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之作业--------购物车优化的更多相关文章
- Python之作业购物车
作业之购物车优化 购物车优化要求如下: 用户入口: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就 ...
- python练习_购物车(简版)
python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...
- Python 实例2—购物车
老男孩教学学习笔记 """启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒可随机退出,退出 ...
- Hadoop hadoop(2.9.0)---uber模式(小作业“ubertask”优化)
前言: 在有些情况下,运行于Hadoop集群上的一些mapreduce作业本身的数据量并不是很大,如果此时的任务分片很多,那么为每个map任务或者reduce任务频繁创建Container,势必会增加 ...
- Python性能分析与优化PDF高清完整版免费下载|百度云盘
百度云盘|Python性能分析与优化PDF高清完整版免费下载 提取码:ubjt 内容简介 全面掌握Python代码性能分析和优化方法,消除性能瓶颈,迅速改善程序性能! 对于Python程序员来说,仅仅 ...
- python第七天-作业[购物车]
作业要示: 购物车程序:启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出 ...
- Python培训12期-day2作业-购物车
#!/usr/bin/env python import sys import os import getpass 商品={ '图书': { "<Puppet实战>": ...
- python作业购物车(第二周)
一.作业需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4 ...
- python基础day2作业:购物车
#功能:1.可注册账号2.登录买家账号3.可查询编辑购物车里商品4.可以余额充值5.可提示余额不足6.购物车结算 #使用:1.第一次使用先注册账号填写账号金额2.账号金额信息保存在buyer_acco ...
随机推荐
- Gym 101612C Consonant Fencity
原题传送门 题意:给定一个只含小写字母的字符串,假设aeiouyw为元音字母,现在要把一些字母变为大写,要求相同字母的大小写必须相同,统计变化后的字符串中有多少对相邻.同为辅音字母且大小写不一样的字符 ...
- Mysql隔离级别,锁与MVCC
关键词:事务,ACID,隔离级别,MVCC,共享锁,排它锁 阅读本文前请先阅读http://hedengcheng.com/?p=771 http://www.hollischuang.com/arc ...
- list容器的C++代码实现
#include <iostream> using namespace std; template <class T> class mylist;//前置声明 templat ...
- Spring框架学习笔记(6)——bean的继承与依赖
一.bean的继承 Spring通过bean标签的parent属性来实现bean的继承,这个继承的概念只存在于配置层面,也就是说bean只会继承其父bean的属性值. 父bean可以通过abstrac ...
- IE8兼容border-radius.
我们知道,CSS3新增的很多简洁优美的属性,比如border-radius.box-shadow.border-image.gradients.RGBA...因为这些属性的出现,我们可以很方便的就写会 ...
- 使用Eclipse在Excel中找出两张表中相同证件号而姓名或工号却出现不同的的项
1:首先把Excel中的文本复制到txt中,复制如下: A表: 证件号 工号 姓名 310110xxxx220130004 101 傅家宜3101 ...
- POJ 3041 Asteroids(模板——二分最大匹配(BFS增广))
题目链接: http://poj.org/problem?id=3041 Description Bessie wants to navigate her spaceship through a da ...
- Flask连接数据库打怪升级之旅
一.前言 在初学 Flask 的时候,在数据库连接这部分也跟每个初学者一样.但是随着工作中项目接手的多了,代码写的多了,历练的多了也就有了自己的经验和技巧.在对这块儿代码不断的进行升级改造后,整理了在 ...
- ES6中export , export default , import模块系统总结
最近在学习使用Webpack3的时候发现,它已经可以在不使用babel的情况下使用ES6的模块加载功能了. 说到ES6的模块加载功能,我们先复习一下CommonJS规范吧: 一 . CommonJS ...
- thinkphp发送邮件需要开启什么设置
邮件配置 'THINK_EMAIL' => array( 'SMTP_HOST' => 'smtp.163.com', //SMTP服务器 'SMTP_PORT' => '465', ...