Python之购物车
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之购物车的更多相关文章
- Python初探-购物车程序
要求: 1,用户进入后,有欢迎语并提示用户输入本金 2.用户输入正确的内容后有购物菜单显示给用户 3.当用户的本金不足以购买商品的时候有提示余额不足并告知差额 4.成功购物后提示已购买内容和购买后的余 ...
- python之购物车的编写(熬夜撸代码中。。。)
购物车的编写对于我这种不是很精通函数的小白来说,简直太难了.各种坑,各种无奈啊!不过总算也是写出来了! 不多说,直接上代码! #!/usr/bin/env python#用户名 sanjiang#密码 ...
- Python练习----购物车
要求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时 ...
- python实现购物车
一. 功能: 1. 用户充值余额 判断余额输入格式是否正确,正确则转换成float型. 2. 显示商品列表 根据已有商品显示所有商品的序号.商品名称.和价格供用户选择 3. 用户选择商品 判断用户输入 ...
- python复习购物车程序
个人学习总结: 无他,唯手熟尔!多敲多练才是王道 python 第三课 元组的灵活运用&字符串的诸多操作 Program01 '''时间 2018年2月12日12:15:28目的 购物车程序 ...
- 【python】——购物车
作业需求: 用户名和密码存放于文件中,格式为:egon|egon123 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 ...
- Python学习-购物车程序
程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...
- python设计购物车
设计购物车 一需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提 ...
- python编写购物车新写法
用另一种方式完成购物车的功能实现 #!/usr/bin/python zijin = input("请输入资金:") if zijin.isdigit(): zijin = int ...
随机推荐
- mqtt遇到的问题锦集
1.无效客户机标识 (2) Connect指令中的KeepAlive有效范围[60秒,300秒],否则会拒绝连接. 2.消息回调出现频繁的断开连接 待解决 3.长时间消息回调出现 已断开连接 (321 ...
- php 打包下载
<?php class zipfile { var $datasec = array (); var $ctrl_dir = array (); var $eof_ctrl_dir = &quo ...
- 【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)
http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [已解决]python中文字符乱码(GB2312,GB ...
- ROS学习笔记三:编写第一个ROS节点程序
在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package). 1 创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次 ...
- 洛谷 P2042 维护数列
http://blog.csdn.net/drazxlnddt/article/details/51051598 flip为true表示以当前节点为根的子树需要交换.set为true表示以当前节点为根 ...
- Java几种常见的排序方法
日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...
- 450 Delete Node in a BST 删除二叉搜索树中的结点
详见:https://leetcode.com/problems/delete-node-in-a-bst/description/ C++: /** * Definition for a binar ...
- javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"xml")。所需元素为(none)
将xml转换为object时候报错:javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"xml") ...
- Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数
高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...
- iOS----时间日期处理
时间日期处理 1.NSDateFormatter 日期格式化 ①可以把NSString 类型转为 NSDate类型 举例 把 "2015-08-23 19:46:14" 转为NSD ...