Python之购物车

 msg_list = [
['iphone',8888],
['coffe',38],
['book',90],
['Tesla',100000],
['RR',1000000000]
] shopping_cart = [] salary = int(input('input your salary:')) while True:
#计数器,给列表的物品赋值
index = 0
# 循环列表msg_list,并打印
for product in msg_list:
print(index,product)
index +=1
#输入要选取的物品编号
choice = input('>>:').strip()
#对输入的类型进程判断,看是否是数字,isdigit是判断是否是数字的方法
if choice.isdigit():
#判断输入的数字是否在列表的索引值范围内
choice = int(choice)
if choice >= 0 and choice <= len(msg_list):
#商品存在,取到商品。
product = msg_list[choice]
#判断输入的金额是否买得起。
if product[1] <= salary:
#买得起,并加入购物车。
shopping_cart.append(product)
#总金额减去加入购物车的钱
salary -= product[1]
# \033[31;1m XXXXXXXX \033[0m 固定写法,可以改变XXXXXX的字体颜色
print('Added product:' + product[0] + ' into shopping cart, \033[31;1myour current\033[0m balance:' + str(salary))
else:
print('买不起了,产品价格是' + str(product[1]) + "还差" + str(product[1]-salary) + '钱')
else:
print('商品不存在')
elif choice == 'q':
print('-------已购买商品-------') for i in shopping_cart:
print(i) print('您的余额为:',salary)
print('---------结束----------')
break
else:
print('无此选项')

购物车优化:

 msg_list = [['IphoneX',8888],
['Coffee',30],
['MINI',300000],
['Python',998],
['LAND ROVER',4000000],
['RR',10000000],
] shopping_cart = {} salary = int(input("input your salary:")) while True:
index = 0
for product in msg_list:
print(index,product)
index +=1
choice = input(">>:").strip()
if choice.isdigit(): #判断是否为数字
choice = int(choice)
if choice >= 0 and choice < len(msg_list):#商品存在
product = msg_list[choice] #取到商品
if product[1] <= salary: #判断能否买的起
#买的起
if product[0] in shopping_cart: #之前购买过呀
#字典的取值方法
shopping_cart[product[0]][1] += 1 #[price, 数量],只需要把数量+1,加入购物车
else:
shopping_cart[product[0]] = [product[1], 1] #创建一条商品购买记录 salary -= product[1] #扣钱
print("Added product " + product[0] + " into shopping cart,\033[42;1myour current\033[0m balance " + str(salary) )
else:
print("买不起,穷逼! 产品价格是" + str(product[1]) + " 你还差" + str(product[1]-salary) + "钱")
else:
print("商品不存在!")
elif choice == "q":
print("-------已购买商品列表--------")
#print(shopping_cart)
id_counter = 1
#初始化一个总花费的变量
total_cost = 0
print("id 商品 数量 单价 总价")
for key in shopping_cart:
#字符串格式化,10是每个占位符的距离
print("%10s%10s%10s%10s%10s" %(id_counter,
key,
shopping_cart[key][1],
shopping_cart[key][0],
shopping_cart[key][1]*shopping_cart[key][0])) id_counter +=1
total_cost += shopping_cart[key][1]*shopping_cart[key][0] #单个商品总价 print("您的总花费为:",total_cost)
print("您的余额为:",salary)
print("----------end----------")
break
else:
print("无此选项!")

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

  1. Python初探-购物车程序

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

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

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

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

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

  4. python实现购物车

    一. 功能: 1. 用户充值余额 判断余额输入格式是否正确,正确则转换成float型. 2. 显示商品列表 根据已有商品显示所有商品的序号.商品名称.和价格供用户选择 3. 用户选择商品 判断用户输入 ...

  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. bzoj 1006: [HNOI2008]神奇的国度【弦图+LesBFS】

    参考论文:https://wenku.baidu.com/view/6f9f2223dd36a32d73758126.html 参考代码:http://hzwer.com/3500.html 虽然会写 ...

  2. docker 端口被占用问题解决

    启动容器A, A的端口映射是 80:8080 外部的25000端口映射到服务内部的8080端口:有时候将容器关闭,重新构建镜像及启动容器时会出现一些报错, 比如端口被占用的报错,但通过docker p ...

  3. 窗体WINFORM

    窗体的事件:删除事件:先将事件页面里面的挂好的事件删除,再删后台代码里面的事件 Panel是一个容器 1.Label -- 文本显示工具Text:显示的文字取值.赋值:lable1.Text 2.Te ...

  4. C# 代码笔记_tuple元组

    tuple元组: 赋值 List<Tuple<string, int>> cc = new List<Tuple<string, int>>() { n ...

  5. 了解java内存回收机制-博客导读

    此文作为读优质博客前的导读文 1.如何判断对象是否该回收 该对象是否被引用,是否处于不可达状态 2.对象的引用机制 强引用.软引用.弱引用.虚引用 3.垃圾回收机制如何回收.算法. 串行回收.并行回收 ...

  6. Win7系统32位和64位的区别

    Win7系统32位和64位的区别已经是一个老话题了,可是还是有很多朋友不明白.这两者到底有什么区别呢?下面本文与大家通俗的介绍下Win7系统32位和64位的区别,其他一些深入的理论讲述,大家可以看看文 ...

  7. Java MVC框架性能比较

    Java MVC框架性能比较 - by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框 ...

  8. struts2的action是线程安全的,struts1的action不是线程安全的真正原因

    为什么struts2的action是线程安全的,struts1的action不是线程安全的? 先对struts1和struts2的原理做一个简单的讲解 对于struts1 ,当第一次**.do的请求过 ...

  9. Farseer.net轻量级ORM开源框架 V1.3版本升级消息

    SHA-1: abca3b99801648fa23c7f4934de6c128f042cf47 * 提交新版本:V1.31.重构:FS.Mapping命名空间移到 FS.Core.Map中2.重构:对 ...

  10. flex布局(主要分清楚容器和条目)

    设置在容器上面的属性:flex-direction.flex-wrap.flex-flow.justify-content.align-items.align-content1.flex-direct ...