python练习2 购物车程序
# -*- coding: utf-8 -*-
# @Time : 2018/10/18 16:06
# @Author : Two Brother
# @EMAIL : yeluyide@163.com
# @FILE : shoppingcart.py
# @SOFTWARE : PyCharm ##################title#####################
#用户入口:
#1.商品信息存在文件里
##
#商家入口:
#2.可以添加商品,修改商品价格
############################################
with open('use','r+',encoding='utf-8') as fu:
dictfu = {}
lines1 = fu.readlines()
for line in lines1:
(key,value) = line.strip().split()
dictfu[key] = value
with open('commodity', 'r+', encoding='utf-8') as fc:
dictfc = {}
lines2 = fc.readlines()
for line in lines2:
(key,value1,value2) = line.strip().split()
dictfc[key] = {value1:value2}
with open('admin','r') as fa:
admin = fa.readlines()
for i in range(0,len(admin)):
admin[i] = admin[i].strip()
i = input("请输入您的账号>>>>>>>>>>")
if i in dictfu.keys():
lastmoney = int(dictfu[i])
print('我是会员%s,我的余额%s' % (i,lastmoney))
for n in dictfc:
print(n,dictfc[n])
buy = []
salecost = 0
while True:
ic = input("请输入您要购买的商品编号>>>>>>>")
if ic in dictfc.keys():
print("商品%s已经加入购物车,查看购物车请按S,直接支付请按P" % dictfc[ic])
buy.append(dictfc[ic])
for x in dictfc[ic]:
salecost = salecost + int(dictfc[ic][x])
continue
elif ic.upper() == 'S':
print("您的购物车信息如下,总计%s元,直接支付请按P" % salecost)
for y in buy:print(y)
continue
elif ic.upper() == 'P':
if salecost <= lastmoney:
lastmoney2 = lastmoney - salecost
print("您本次消费金额%s元,余额还剩余%s元!欢迎下次光临" % (salecost,lastmoney2))
with open('use', 'w', encoding='utf-8') as fu2:
for line in lines1:
if i in line:
line = line.replace(str(lastmoney),str(lastmoney2))
fu2.write(line)
break
else:
pi = input("您本次购物需要花费金额%s元,余额只有%s元,交易失败,重新购物请按B,充值请按R,退出请按其他键>>>>"%(salecost,lastmoney))
if pi.upper() == 'B':
continue
if pi.upper() == 'R':
print("充值功能待开放")
break
else:
break
else:
break elif i in admin:
while True:
ai = input("请选择你要做的操作:A查看商品 B修改商品价格 C添加删除商品>>>>>")
if ai.upper() == 'A':
for o in dictfc:
print(o,dictfc[o])
continue
elif ai.upper() == 'B':
bi = input("请选择你要修改商品的商品编号>>>>")
if bi in dictfc:
print(dictfc[bi])
bi2 = input("请输入你要修改此商品的价格>>>>")
with open('commodity','w',encoding='utf-8') as fc2:
for line in lines2:
if bi in line:
for bi3 in dictfc[bi]:
line = line.replace(dictfc[bi][bi3],bi2)
fc2.write(line)
with open('commodity', 'r', encoding='utf-8') as fc3:
lines3 = fc3.readlines()
for line in lines3:
(key, value1, value2) = line.strip().split()
dictfc[key] = {value1: value2}
else:
print("商品编码输入有误,请重新输入")
continue
else:
print('程序退出')
break
else:
print('用户不存在')
python练习2 购物车程序的更多相关文章
- python学习:购物车程序
购物车程序 product_list = [ ('mac',9000), ('kindle',800), ('tesla',900000), ('python book',105), ('bike', ...
- python元组与购物车程序
#Author:zww ''' 程序:购物车程序 需求: 1.启动程序后,让用户输入工资,然后打印呢商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否足够,够就直接扣款,不够 ...
- Python初学时购物车程序练习实例
不多说了,直接上代码: #Author:Lancy Wu product_list=[ ('Iphone',5800), ('Mac Pro',9800), ('Bike', 800), ('Watc ...
- [ Python -1 ] 简易购物车程序
练习: 1. 要求用户输入总资产,例如:2000 2. 显示商品列表,让用户根据序号选择商品,加入购物车 3. 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功. goods = [{' ...
- python复习购物车程序
个人学习总结: 无他,唯手熟尔!多敲多练才是王道 python 第三课 元组的灵活运用&字符串的诸多操作 Program01 '''时间 2018年2月12日12:15:28目的 购物车程序 ...
- 使用python操作文件实现购物车程序
使用python操作文件实现购物车程序 题目要求如下: 实现思路 始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息.在程序开始的时候读进来,程序结束的时候写回文件里去.在登录注册的部分, ...
- Python学习-购物车程序
程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...
- python基础代码(猜年龄、从最内层跳出多层循环、简单的购物车程序)
1.猜年龄 , 可以让用户最多猜三次! age = 55 i=0 while i<3: user_guess = int (input ("input your guess:" ...
- 浅谈自学Python之路(购物车程序练习)
购物车程序练习 今天我们来做一个购物车的程序联系,首先要理清思路 购物车程序需要用到什么知识点 需要用到哪些循环 程序编写过程中考虑值的类型,是int型还是字符串 如果值为字符串该怎么转成int型 用 ...
随机推荐
- ubuntu mysql5.7源码安装
本系列的lnmp的大框架基本上是按照http://www.linuxzen.com/lnmphuan-jing-da-jian-wan-quan-shou-ce-si-lnmpda-jian-yuan ...
- phpstorm更改sql文件匹配类型
正常情况下,sql文件都有对应的文件类型.但是默认的sql文件只是关联普通的sql.很多语法都无法高亮,以及自动提醒.
- 揭开自然拼读法(Phonics)的神秘面纱
揭开自然拼读法(Phonics)的神秘面纱 自然拼读法 (Phonics),是指看到一个单词,就可以根据英文字母在单词里的发音规律把这个单词读出来的一种方法.即从“字母发音-字母组合发音-单词-简单 ...
- servlet简单例子1
servlet简单例子1 分类: servlet jsp xml2012-04-18 21:54 3646人阅读 评论(3) 收藏 举报 servletloginjspaction浏览器 LoginS ...
- 深入探析c# Socket
最近浏览了几篇有关Socket发送消息的文章,发现大家对Socket Send方法理解有所偏差,现将自己在开发过程中对Socket的领悟写出来,以供大家参考. (一)架构 基于TCP协议的Socket ...
- 转:IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容
访问网址:http://blog.csdn.net/csethcrm/article/details/37820135 有两个地方需要配置: 1.web.config中的节点: <system. ...
- HDU3853:LOOPS(概率DP)
传送门 题意 从(i,j)走到(i,j),(i,j+1),(i+1,j)的概率为p[i][j][1],p[i][j][2],p[i][j][3],花费2魔力,问从(1,1)走到(r,c)的期望 分析 ...
- P3308 [SDOI2014]LIS(最小割+退流)
传送门 设\(f[i]\)为以\(i\)结尾的最长上升子序列.可以考虑建这样一张图,对于所有的\(i<j,f[j]=f[i+1]\)连边\((i,j)\),\(f[i]=1\)的话连边\((S, ...
- crm-vue项目上线前对加载速度以及兼容IE的一些方法
一.关于IE浏览器适配 打包前我们可以在package.json文件做如下配置 "browserslist": [ "> 1%", "last ...
- Spring 中 ApplicationContext 和 BeanFactory 的区别
//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...