要求:

  1. 启动程序后,让用户输入工资,然后打印出带有序号的商品列表
  2. 用户输入商品序号购买相应的商品,或者输入 ' q ' 退出购买界面
  3. 选择商品后,检查余额是否足够,够则直接扣款,不够则提示余额不足
  4. 用户每购买一件商品后,或者输入 ' q ' 退出购买界面后,提示:是否继续购买?(Y/N),实现多次购买
  5. 若用户购买了商品,打印出购买的商品列表,总金额,余额;若用户没买任何商品,打印:交易结束,购物失败

Readme:

  运行程序,输入薪水,根据商品列表的序号选择购买的商品,可以选择多次购买,或者不购买

流程图:

        

代码:

 # 简单的购物小程序

 product_list = [
['surface pro 4', 7800],
['dell xps 15', 12000],
['macbook', 12000],
['小米6', 2499],
['iphone7', 4600],
['坚果Pro', 1499]
]
shopping_list = [] # 判断输入的薪水格式是否正确
while True:
salary = input('\n请输入您的薪水:')
if not salary.isdigit(): # 薪水不是数字,结束循环
print('\n输入格式有误!请重新输入...')
continue
break balance = salary = int(salary) print('\n-----------欢迎购买------------\n') # 生成带序号的商品列表
for index, item in enumerate(product_list):
print(index, item) # 判断输入的序号是否符合要求
while True: while True:
i = input('\n输入您要购买的商品序号,或输入 q 取消购买:')
if i == 'q': # 输入 q 退出购买界面
while True:
a = input('\n是否继续购买?(Y/N):')
if a != 'n' and a != 'N' and a != 'y' and a != 'Y':
print('\n输入格式有误,请重试...')
continue
elif a == 'y' or a == 'Y': # 继续购买
break
else: # 购买完毕
if balance == salary: # 没有买任何东西
print('\n交易结束,购买失败...')
exit()
else: # 结算
print('\n您已成功购买以下商品:\n')
for item in shopping_list:
print(item)
print('\n共消费金额 %d 元,余额 %d 元' % (salary - balance, balance))
exit()
continue if not i.isdigit(): # 序号不是数字,结束循环
print('\n输入格式有误!请重新输入...')
continue i = int(i) if i < 0 or i >= len(product_list): # 序号范围不正确,结束循环
print('\n此商品不存在,请重新输入...')
continue
break product = product_list[i]
price = int(product[1]) # 判断余额是否充足,够就直接扣款,不够提醒
if price <= balance:
balance -= price
shopping_list.append(product_list[i])
print('\n您已成功购买 %s ,当前余额为 %d 元' %(product, balance))
else:
print('\n购买失败,您的余额不足...') while True:
a = input('\n是否继续购买?(Y/N):')
if a != 'n' and a != 'N' and a != 'y' and a != 'Y':
print('\n输入格式有误,请重试...')
continue
break if a == 'Y' or a == 'y':
continue
else:
break if balance == salary:
print('\n交易结束,购买失败...')
exit()
else:
print('\n您已成功购买以下商品:\n')
for item in shopping_list:
print(item)
print('\n共消费金额 %d 元,余额 %d 元' %(salary-balance, balance))
exit()

pyhton购物程序的更多相关文章

  1. [terry笔记]python购物程序

    如下是一个购物程序: 先输入工资,显示商品列表,购买,quit退出,最后格式化输出所买的商品. count = 0 while True: #做一个循环判断,如果输入的不是数字,基于提示,三次后退出 ...

  2. python3 购物程序

    要求: 一.启动程序后,选择是商家还是用户 1.选择商家用户 输入用户名,密码进入 选择增加商品及价格:格式:  商品名称 价格 选择编辑商品及价格:根据提示进行操作 2.选择用户 输入用户名,密码进 ...

  3. python ATM购物程序

    需求: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...

  4. Python 简单购物程序

    # Author:Eric Zhao# -*- coding:utf-8 -*-'''需求:启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就 ...

  5. 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统

    一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单 ...

  6. (七)第一个python程序!

    这是对我自己来说比较有仪式的一篇随笔记录,说了那么多,开始第一个pyhton小程序吧! 首先找一个版本比较新的Linux系统, 执行Python –V 查看一下你的Python版本: # python ...

  7. 6_python之路之atm购物

    6_python之路之atm购物 1.程序说明:Readme.cmd supermarket 项目主目录 ├── access.log 日志文件 ├── atm atm程序 │?? ├── atm.p ...

  8. struts.xml配置详解 内部资料 请勿转载 谢谢合作

    1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件 ...

  9. struts.xml配置详解

    struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用includ ...

随机推荐

  1. PowerShell使用-debug定位问题

    PowerShell就像它的名字一样,很强大,用起来很方便,所以微软基本上所有的主流企业级产品都支持PowerShell,Azure也不例外.通过Azure门户网站固然是简单直观,但对于很多IT管理员 ...

  2. Unity3D-游戏中的技能碰撞检测

    在游戏战斗中,我们会用到各种各样的碰撞检测,来判断是否打中了目标 比如扇形检测/圆形检测 还有矩形检测,王者荣耀里后羿的大招就是一个很长的矩形碰撞体 这些在Unity3D引擎中其实都封装好了一些Col ...

  3. 从 RequireJs 源码剖析脚本加载原理

    引言 俗话说的好,不喜欢研究原理的程序员不是好的程序员,不喜欢读源码的程序员不是好的 jser.这两天看到了有关前端模块化的问题,才发现 JavaScript 社区为了前端工程化真是煞费苦心.今天研究 ...

  4. Spring MVC 基本注解

    1. Spring MVC 常用到的注解: @Controller @RequestMapping @RequestParam @RequestHeader @ModelAttribute @Path ...

  5. C# Web.config配置

    使用 <!--M002 バッチを起動のPath配置--> <add key="BM0002_START_PATH" value="D:\BM0002\B ...

  6. 浅谈Notepad++选中行操作+快捷键+使用技巧【超详解】

    Notepad++选中行操作 快捷键 使用技巧 用Notepad++写代码,要是有一些重复的代码想copy一下,还真不容易,又得动用鼠标,巨烦人.... 有木有简单的方法呢,确实还是有的不过也不算太好 ...

  7. Nodejs cluster模块深入探究

    由表及里 HTTP服务器用于响应来自客户端的请求,当客户端请求数逐渐增大时服务端的处理机制有多种,如tomcat的多线程.nginx的事件循环等.而对于node而言,由于其也采用事件循环和异步I/O机 ...

  8. 走进json

    纯做笔记,请多指教... 1,json格式: 非数组: {"key" : "value"} 数组:[{"key" : "value ...

  9. Linux,activemq-cpp之消息过滤器

    假设过滤器字符串如下: filt1=aaaa filt2=bbbb filt3=cccc activeMQ-cpp中消息过滤器,在发送消息的producer.cpp中,对message进行属性设置,m ...

  10. java内存区域——深入理解JVM读书笔记

    本内容由<深入理解java虚拟机>的部分读书笔记整理而成,本读者计划连载. 通过如下图和文字介绍来了解几个运行时数据区的概念. 方法区:它是各个线程共享的区域,用于内存已被VM加载的类信息 ...