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 ...
随机推荐
- 类A是公共的,应在名为A.java的文件中声明错误
第一种!!! “类A是公共的,应在名为A.java的文件中声明”这句话需要分两步来理解: 1.如果类A被声明为公共的(public),那么必须将类A保存在名为A.java的文件中: 2.反之,在一个文 ...
- 2017ecjtu-summer training # 9 HDU 4544
湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- Linux 用户组及用户管理
查看所有组的信息:(信息保存在/etc/group文件中) 其中每段信息用:分割 ,每段的含义如下: 用户名组名:密码:用户组的id:用户组所包含的用户(多个用户用,分割) 查看所有的用户信息:(信息 ...
- 如何给网站添加CNZZ站长统计功能代码的常用办法
前几天有个客户来问小编怎么给网站添加上CNZZ站长统计工具,其实这个很简单,只要把cnzz免费代码复制到我们的footer文件就行.今天小编正好有空就来分享一下具体的操作过程. 首先要想获得这个免费的 ...
- 如何利用vue和php做前后端分离开发?
新手上路,前端工程师,刚毕业参加工作两个月,上面让我用vue搭建环境和php工程师一起开发,做前后端分离,然而我只用过简单的vue做一些小组件的经验,完全不知道怎样和php工程师配合,ps: php那 ...
- SSL和SSH有什么区别
SSL 是一种安全协议,它为网络(例如因特网)的通信提供私密性.SSL 使应用程序在通信时不用担心被窃听和篡改. SSL 实际上 是共同工作的两个协议:"SSL 记录协议"(SSL ...
- FileZilla出现Failed to convert command to 8 bit charset
FileZilla这款FTP客户端软件,自从华哥使用以来,采用其默认的设置,一直用得很顺畅,没有出现过什么问题.但是今天碰到了一个问题.如图. 错误信息为:Failed to convert comm ...
- jquery mobile-按钮控件
jQuery Mobile 中的按钮会自动获得样式,这增强了他们在移动设备上的交互性和可用性.我们推荐您使用 data-role="button" 的 <a> 元素来创 ...
- MySQL Block Nested Loop and Batched Key Access Joins(块嵌套循环和批量Key访问连接)
Block Nested-Loop and Batched Key Access Joins Batched Key Access (BKA) Join算法通过index和join buffer访问j ...
- 数据结构 哈希表(Hash Table)_哈希概述
哈希表支持一种最有效的检索方法:散列. 从根来上说,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素. 哈希表的主要思想是通过一个哈希函数,在所有可能的键与槽位之间建立一张映射表.哈希 ...