需求:

  用户入口:

  1、商品信息放在文件中,从文件中读取

  2、已购商品,余额记录,第一要输入起始金额,以后不需要二次输入

  商家入口:

  2、可以添加商品,修改商品价格

 # Author:Lee Sirimport sys

 def goods_info():
goods_info = 'goods_info.txt'
fd = open(goods_info)
return fd def goods_list(fd):
print('商品列表'.center(30,'-'))
for items in fd.readlines():
index,goods_name,goods_price = items.split()
print(index,goods_name,goods_price) def check_cart(buylist):
print('您的购物车如下:')
for name,price in buylist:
print('名称:',name,'价格:',price)
check_choice = input('是否结账?:[Y/N]')
if check_choice == 'y' or check_choice == 'Y':
return True
else:
return False def check_money(money,buylist):
money = int(money)
chech_result = 0
for name,price in buylist:
chech_result += int(price)
if chech_result <= money:
return True,money - chech_result
else:
return False,money def buyer():
buylist = []
while True:
money = input("请输入的金钱:")
if money.isdigit():
while True:
money = int(money)
fd = goods_info()
goods_list(fd)
choice = input('请输出你要购买的商品序号:')
if choice.isdigit():
choice = int(choice)
# print(type(choice))
fd.seek(0)
if choice > 0 and choice <= len(fd.readlines()):
fd.seek(0)
#print('1')
for items in fd.readlines():
index, goods_name, goods_price = items.split()
if int(index) == choice:
buylist.append((goods_name,goods_price))
print('添加 %s 至购物车。' % (goods_name))
buy_choice = input('是否继续购买? [Y/N]')
if buy_choice == 'y' or buy_choice == 'Y':
continue
else:
if len(buylist) > 0:
if check_cart(buylist):
check_result, balance = check_money(money,buylist)
if check_result:
exit('结算成功,您的余额还有 %s' % balance )
else:
continue_buy = input('您的余额不足,是否修改购物车?: [Y/N]')
if continue_buy == 'Y' or continue_buy == 'y':
print('您的购物车如下:')
for index,buy_name in enumerate(buylist):
name,price = buy_name
print('序号:',index,'名称:', name, '价格:', price)
else:
while True:
dele_cart = input('请输入你要删除的产品序号:')
if dele_cart.isdigit():
dele_cart = int(dele_cart)
if dele_cart >= 0 and dele_cart <= len(buylist):
buylist.remove(dele_cart)
break
else:
print('输入错误请重新输入')
else:
print('输入错误,请重新输入') else:
continue_check = input('您的购物车为空,是否继续购买? [Y/N]')
if continue_check == 'Y' or continue_check == 'y':
continue
else:
exit('See you tomorrow!')
else:
print('输入有误,请重新输入:') else:
exit('您没有购买任何产品,再见!')
else:
print('输入有误,请重新输入') buyer()

Python小程序之购物车的更多相关文章

  1. 怎么样通过编写Python小程序来统计测试脚本的关键字

    怎么样通过编写Python小程序来统计测试脚本的关键字 通常自动化测试项目到了一定的程序,编写的测试代码自然就会很多,如果很早已经编写的测试脚本现在某些基础函数.业务函数需要修改,那么势必要找出那些引 ...

  2. 微信小程序 - 实现购物车结算

    示例源码下载:小程序-实现购物车结算

  3. Python 小程序,对文件操作及其它

    以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行 ...

  4. 微信小程序实战 购物车功能

    代码地址如下:http://www.demodashi.com/demo/12400.html 一.准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com/ ...

  5. Day1:第一个python小程序

    Day1:第一个python小程序与开发工具Pycharm 一.Hello World C:\Users\wenxh>python Python 3.6.2 (v3.6.2:5fd33b5, J ...

  6. 微信小程序之购物车功能

    前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法非常像,接下来就看看小程序可以怎样实现购物车功能. 需求 先来弄清楚购物车的需求. 单选.全选和取消, ...

  7. 一个有意思的Python小程序(全国省会名称随机出题)

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 最近比较迷Python,仿照<Python编程快速上手>8.5写了一个随机出卷的小 ...

  8. 微信小程序——加入购物车弹层

    对于网上商城,加入购物车是一个必备功能了.俺今天就来说下在微信小程序里如何造一个购物车弹层. 先上图: 主要用到的微信API:wx.createAnimation(OBJECT) 说下思路: 1.wx ...

  9. [转]微信小程序之购物车 —— 微信小程序实战商城系列(5)

    本文转自:http://blog.csdn.net/michael_ouyang/article/details/70755892 续上一篇的文章:微信小程序之商品属性分类  —— 微信小程序实战商城 ...

随机推荐

  1. Navicat oracle to postgresql ERR

    可能的解决思路是设好源数据和目标数据库后,先建立表结构,然后修改表结构字段数据类型 参考 https://www.cnblogs.com/stephen-liu74/archive/2012/04/3 ...

  2. python------- IO 模型

                                                    IO模型介绍                                               ...

  3. Spring实战第六章学习笔记————渲染Web视图

    Spring实战第六章学习笔记----渲染Web视图 理解视图解析 在之前所编写的控制器方法都没有直接产生浏览器所需的HTML.这些方法只是将一些数据传入到模型中然后再将模型传递给一个用来渲染的视图. ...

  4. Leetcode 54. Spiral Matrix & 59. Spiral Matrix II

    54. Spiral Matrix [Medium] Description Given a matrix of m x n elements (m rows, n columns), return ...

  5. 安装arch系统时,把ubuntu的efi分区格式化

    导致无法从grub进入ubuntu,之后我进入win10,把ubuntu的分区都删了. 再重启,只能进入黑色的grub界面,显示 grub>> 甚至无法进入win10.只能通过在开机时按F ...

  6. PAT——乙级1015/甲级1062:德才论

    这两个题是一模一样的 1015 德才论 (25 point(s)) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德 ...

  7. UVA 11297 Census(二维线段树)

    Description This year, there have been many problems with population calculations, since in some cit ...

  8. ORACLE和SQL语法区别归纳

    数据类型比较类型名称 Oracle   SQLServer   比较字符数据类型  CHAR  CHAR  都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb ...

  9. linux启动和关闭防火墙命令

    在此说一下关于启动和关闭防火墙的命令:1) 重启后生效开启: chkconfig iptables on关闭: chkconfig iptables off2) 即时生效,重启后失效开启: servi ...

  10. el-input怎么绑定回车事件

    在 Vue 2.0 中,为自定义组件绑定原生事件必须使用 .native 修饰符:<el-input v-model="queryForm.skuName" placehol ...