需求:

  用户入口:

  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. (2)分布式下的爬虫Scrapy应该如何做-关于对Scrapy的反思和核心对象的介绍

    本篇主要介绍对于一个爬虫框架的思考和,核心部件的介绍,以及常规的思考方法: 一,猜想 我们说的爬虫,一般至少要包含几个基本要素: 1.请求发送对象(sender,对于request的封装,防止被封) ...

  2. 「暑期训练」「Brute Force」 Optimal Point on a Line (Educational Codeforces Round 16, B)

    题意 You are given n points on a line with their coordinates $x_i$. Find the point x so the sum of dis ...

  3. (干货分享)mac python+appium环境搭建

    因为mac本自带python2.x(不建议卸载,因为本本本身有很多依赖与此),所以装python3的过程极其坎坷,勉强装好后也总是各种报错.这次装appium环境,直接把原来的python3卸了,用h ...

  4. tomcat8编码设置和gc异常解决

    用startup.bat启动 编码解决: 用编辑器打开catalina.bat文件找到set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% " 更改为 se ...

  5. JavaSE复习(三)异常与多线程

    异常 分类 编译时期异常:checked异常. 在编译时期,就会检查,如果没有处理异常,则编译失败.(如日期格式化异常) 运行时期异常:runtime异常. 在运行时期,检查异常.在编译时期,运行异常 ...

  6. spring-data-jpa 简单使用心得

    对于总是使用mybatis的我,突发奇想的想使用spring-data-jpa搭一个小环境,这几天处处碰壁,现总结如下: 环境采用springboot maven需要导入: <dependenc ...

  7. idea tomcat 启动报错 org.apache.catalina.core.StandardService.initInternal Failed to initialize connector

    org.apache.catalina.core.StandardService.initInternal Failed to initialize connector org.apache.cata ...

  8. 论 Web 前端加密的意义

    论 Web 前端加密的意义 Web前端密码加密是否有意义? https://www.zhihu.com/question/25539382 https://blog.csdn.net/hla19910 ...

  9. mysql类型与java类型对应异常场景

    MySQL的bigint unsigned类型,对应java的BigInteger类型,在基于mybatis框架时,如果我将bigint unsigned类型的字段的返回放在一个map的返回类型中时. ...

  10. div加了float后 四个特性

    1.宽度变成0 2.左漂浮 或者右漂浮 3.后面的标签占据原来的位置 4对前面的div没有影响 他会浮动到前面div下面