一、 功能:

  1、 用户充值余额

    判断余额输入格式是否正确,正确则转换成float型。

  2、 显示商品列表

    根据已有商品显示所有商品的序号、商品名称、和价格供用户选择

  3、 用户选择商品

    判断用户输入

    (1) 若输入为数字则判断是否为负或超出商品序号范围

    (2) 若输出为“q”则打印已选择商品,并退出

    (3) 若前者都不是则判断非法,重新选择

  4、 用户选择商品后判断余额是否能够支付已选择商品的总价格

    (1) 可以支付则继续选择

    (2) 不可支付则提醒充值,充值完成后继续选择购买

二、 流程图

  

三、 代码

  

 # Author:晴空无云
#购物车存储列表
cartlist = []
#商品列表
goodslist = [[,'note',1.0],[,'Python Struct',88.0],[,'Java',55.0],[,'C++',1.0],]
#余额,
balance = input("请充值:")
#判断余额是否合法
if balance.isdigit():
#将balance转置成float
balance = float(balance)
while balance>=:#余额不为负
print("*******商品列表********")
for index,item in enumerate(goodslist,start=):
print(item)
user_choice = input("请选择购买商品:")
if user_choice.isdigit():# 判断商品选择是否合法
# 选择商品从1开始,列表下标是0
user_choice = int(user_choice)-
if user_choice < :
print("非法输入,商品序号不能为负")
elif (user_choice < len(goodslist)):
price = goodslist[user_choice][]
if balance - price >= :
balance = balance - price
print("选择的商品为:",goodslist[user_choice])
print("余额为:", balance)
cartlist.extend(goodslist[user_choice])
else:
now_salar = input("余额不足,请充值:")
if now_salar.isdigit():
now_salar = int(now_salar)
balance = balance + now_salar
print("余额为:", balance)
else:
print("非法输入") else:
print("选择商品不存在")
elif user_choice=="q":
print("-----已选购商品-----")
print(cartlist)
print("-----余额------")
print(balance, '元')
break
else:
print("商品序号非法输入")
else:
print("余额输入非法")

四、 测试结果

  1. 余额输入非法

  

请充值:d
余额输入非法
**********
请充值:-
余额输入非法

  2. 测试打印商品列表

  

请充值:
*******商品列表********
[, 'note', 1.0]
[, 'Python Struct', 88.0]
[, 'Java', 55.0]
[, 'C++', 1.0]
请选择购买商品:

  3.测试购买商品

  

请选择购买商品:
选择的商品为: [, 'note', 1.0]
余额为: 98.0
*******商品列表********
[, 'note', 1.0]
[, 'Python Struct', 88.0]
[, 'Java', 55.0]
[, 'C++', 1.0]
请选择购买商品:
选择的商品为: [, 'Python Struct', 88.0]
余额为: 10.0
*******商品列表********
[, 'note', 1.0]
[, 'Python Struct', 88.0]
[, 'Java', 55.0]
[, 'C++', 1.0]
请选择购买商品:

  4. 测试余额不足下充值

  

余额为: 9.0
*******商品列表********
[, 'note', 1.0]
[, 'Python Struct', 88.0]
[, 'Java', 55.0]
[, 'C++', 1.0]
请选择购买商品:
余额不足,请充值:
余额为: 64.0
*******商品列表********
[, 'note', 1.0]
[, 'Python Struct', 88.0]
[, 'Java', 55.0]
[, 'C++', 1.0]
请选择购买商品:

  5. 测试商品序号非法输入

  

*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:0
非法输入,商品序号不能为0
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:-1
商品序号非法输入
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:5
选择商品不存在
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:dd
商品序号非法输入
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:

  6. 测试退出购买

请充值:999
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:1
选择的商品为: [1, 'note', 1.0]
余额为: 998.0
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:3
选择的商品为: [3, 'Java', 55.0]
余额为: 943.0
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:2
选择的商品为: [2, 'Python Struct', 88.0]
余额为: 855.0
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:4
选择的商品为: [4, 'C++', 1.0]
余额为: 854.0
*******商品列表********
[1, 'note', 1.0]
[2, 'Python Struct', 88.0]
[3, 'Java', 55.0]
[4, 'C++', 1.0]
请选择购买商品:q
-----已选购商品-----
[1, 'note', 1.0]
[3, 'Java', 55.0]
[2, 'Python Struct', 88.0]
[4, 'C++', 1.0]
-----总消费------
145.0
-----余额------
854.0 元

python实现购物车的更多相关文章

  1. Python之购物车

    Python之购物车 msg_list = [ ['iphone',8888], ['coffe',38], ['book',90], ['Tesla',100000], ['RR',10000000 ...

  2. Python初探-购物车程序

    要求: 1,用户进入后,有欢迎语并提示用户输入本金 2.用户输入正确的内容后有购物菜单显示给用户 3.当用户的本金不足以购买商品的时候有提示余额不足并告知差额 4.成功购物后提示已购买内容和购买后的余 ...

  3. python之购物车的编写(熬夜撸代码中。。。)

    购物车的编写对于我这种不是很精通函数的小白来说,简直太难了.各种坑,各种无奈啊!不过总算也是写出来了! 不多说,直接上代码! #!/usr/bin/env python#用户名 sanjiang#密码 ...

  4. Python练习----购物车

    要求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时 ...

  5. python复习购物车程序

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

  6. 【python】——购物车

    作业需求: 用户名和密码存放于文件中,格式为:egon|egon123 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 ...

  7. Python学习-购物车程序

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

  8. python设计购物车

    设计购物车 一需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提 ...

  9. python编写购物车新写法

    用另一种方式完成购物车的功能实现 #!/usr/bin/python zijin = input("请输入资金:") if zijin.isdigit(): zijin = int ...

随机推荐

  1. CRC 校验

    匠心零度 转载请注明原创出处,谢谢! 说明 上篇RocketMQ(二):RPC通讯介绍了rocketmq的一些rpc细节,其实这些内容不仅仅是rocketmq内容,任何通信模块基本都是类似的,这块内容 ...

  2. 返回到前台的String出现乱码问题

    使用springmvc给前天返回String类型的数据出现乱码问题可以在配置环境Spring-mvc.xml中添加如下代码 <mvc:annotation-driven> <mvc: ...

  3. kubernetes入门(10)kubernetes单机安装后 - helloworld

    前言 查看端口是否被监听了 ::netstat -tlp |grep 31002 我是用的yum install etcd kubernetes docker vim, 这样装的是1.5.2,不是最新 ...

  4. 新概念英语(1-55)The Sawyer family

    新概念英语(1-55)The Sawyer family When do the children do their homework? The Sawyers live at 87 King Str ...

  5. BAT美团滴滴java面试大纲(带答案版)之三:多线程Lock

    继续面试大纲系列文章. 这是多线程的第二篇. 多线程就像武学中对的吸星大法,理解透了用好了可以得道成仙,俯瞰芸芸众生:而滥用则会遭其反噬. 在多线程编程中要渡的第二个“劫”,则是Lock.在很多时候, ...

  6. Python学习之条件判断和循环

    #coding= utf-8 # 条件判断和循环 # 如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做 age1 = 20 if age1 >= 18: prin ...

  7. Ubuntu下安装最新sublime

    1. Install the GPG key: wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key ...

  8. layer ui插件显示tips时,修改字体颜色

    今天做调查问卷,又遇到一个蛋疼小问题,记录下. 调查问卷有很多选项是要求必填的,如果不填的话,需要给出友好的提示.用的如下组件:http://layer.layui.com/ 1.之前一直默认用的: ...

  9. 深入理解JavaScript的this指向问题

    Javascript的this用法 this是Javascript语言的一个关键字.它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function test(){ this.x ...

  10. 使用 RHEL(RedHat)6.1 iso 安装包 安装Samba过程

    今天因为工作的需要安装了(RHEL)redhat 6.1 自己为了方便就安装Samba 以记之. 注:Linux系统是刚刚安装好的所以没有samba安装的任何记录. 安装准备: ISO:RHEL_6. ...