#  -*-   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 购物车程序的更多相关文章

  1. python学习:购物车程序

    购物车程序 product_list = [ ('mac',9000), ('kindle',800), ('tesla',900000), ('python book',105), ('bike', ...

  2. python元组与购物车程序

    #Author:zww ''' 程序:购物车程序 需求: 1.启动程序后,让用户输入工资,然后打印呢商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否足够,够就直接扣款,不够 ...

  3. Python初学时购物车程序练习实例

    不多说了,直接上代码: #Author:Lancy Wu product_list=[ ('Iphone',5800), ('Mac Pro',9800), ('Bike', 800), ('Watc ...

  4. [ Python -1 ] 简易购物车程序

    练习: 1. 要求用户输入总资产,例如:2000 2. 显示商品列表,让用户根据序号选择商品,加入购物车 3. 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功. goods = [{' ...

  5. python复习购物车程序

    个人学习总结: 无他,唯手熟尔!多敲多练才是王道 python 第三课 元组的灵活运用&字符串的诸多操作 Program01 '''时间 2018年2月12日12:15:28目的 购物车程序 ...

  6. 使用python操作文件实现购物车程序

    使用python操作文件实现购物车程序 题目要求如下: 实现思路 始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息.在程序开始的时候读进来,程序结束的时候写回文件里去.在登录注册的部分, ...

  7. Python学习-购物车程序

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

  8. python基础代码(猜年龄、从最内层跳出多层循环、简单的购物车程序)

    1.猜年龄 , 可以让用户最多猜三次! age = 55 i=0 while i<3: user_guess = int (input ("input your guess:" ...

  9. 浅谈自学Python之路(购物车程序练习)

    购物车程序练习 今天我们来做一个购物车的程序联系,首先要理清思路 购物车程序需要用到什么知识点 需要用到哪些循环 程序编写过程中考虑值的类型,是int型还是字符串 如果值为字符串该怎么转成int型 用 ...

随机推荐

  1. xpath中双斜杠的作用// double slash

    https://stackoverflow.com/questions/36019544/if-double-slash-is-used-2-times-in-xpath-what-does-it-m ...

  2. Android开发之自定义对话框

    由于系统自带的对话框不好看,于是本人就自定义了一个对话框,以后有类似的就可以直接使用啦.先上效果图: 1,布局文件dialog_clear_normal.xml <?xml version=&q ...

  3. HubbleDotNet引擎查询技术

    系统简介 HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件.开源协议是 Apache 2.0.HubbleDotNet提供了基于SQL的全文检索接口,使 ...

  4. spring-boot快速搭建解析

    创建方式: 1.在File菜单里面选择 New > Project,然后选择Spring Initializr: 2.使用maven直接构建,添加依赖. 1 2 3 4 pom.xml:Mave ...

  5. 本地通信实例(AF_UNIX) (转载)

    转自:http://www.groad.net/bbs/thread-1709-1-1.html 程序说明:  程序里包含服务端和客户端两个程序,它们之间使用 AF_UNIX 实现本机数据流通信.使用 ...

  6. Codeforces Round #409(Div.2)

    传送门 题意 A.询问最多改变一个字符的字符串"VK"子串数量 B.f(x,z)=y,给出x,y,求z For example, f("ab", "b ...

  7. bzoj 1797: [Ahoi2009]Mincut 最小割【tarjan+最小割】

    先跑一遍最大流,然后对残量网络(即所有没有满流的边)进行tarjan缩点. 能成为最小割的边一定满流:因为最小割不可能割一半的边: 连接s.t所在联通块的满流边一定在最小割里:如果不割掉这条边的话,就 ...

  8. YCOJ中国邮递员问题

    题目: Description 一个邮递员从邮局出发,需要去 n - 2个城市送信,送完信件以后回家. 邮局在城市 1,家在城市 n,任意两个城市之间都有道路,但是这些道路是单向,也就是说 a 到 b ...

  9. 数字货币期货与现货JavaScript量化策略代码详解汇总

    1.动态平衡策略 按照当前的 BTC 的价值,账户余额保留¥5000 现金和 0.1个 BTC,即现金和BTC 市值的初始比例是 1:1. 如果 BTC 的价格上涨至¥6000,即 BTC 市值大于账 ...

  10. Xcode7 使用AFNetWorking 报错 添加Security.framework

    Undefined symbols for architecture x86_64: "_SecCertificateCopyData", referenced from: _AF ...