python练习_购物车(简版)
python练习_购物车(简版)
需求:
- 写一个python购物车可以输入用户初始化金额
- 可以打印商品,且用户输入编号,即可购买商品
- 购物时计算用户余额,是否可以购买物品
- 退出结算时打印购物小票
以下代码实现的功能与思路:
功能:
(1)预算金额控制,只能输入大于0的数字
(2)商品格式化打印
(3)选择完成要买的商品后,提示用户再次确认,确认后开始计算用户余额是否大于等于商品价格,价格正确后则加入购物车
(4)输入q则进行结算,结算时将重复的商品进行合并,显示个数,并计算消费总额和余额
思路:
(1)商品打印通过嵌套列表实现
(2)购买商品是只需要比较用户余额和商品价格即可,如果比商品金额打就把这个商品加入到一个列表中
(3)结算时计算用户购物车列表即可
流程图:

使用方法:
执行环境:Python3.5
执行方法,执行执行即可
代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*- import time List_items = [ ["iPhone4",100],["iPhone5",200],["iPhone6",300],["iPhone7",4000],["Python",10000],]
User_shopping_cart = [] def in_money():
'''
判断用户输入金额的函数
'''
global user_in_money
while True:
user_in_money = input("Please enter initial funds:").strip()
if user_in_money.isdigit():
if int(user_in_money) > 0:
while True:
print_lists()
else:
print("\033[31mInput Error!\033[0m")
else:
print("\033[31mInput Error!\033[0m") def print_lists():
'''
获取用户输入的编号,调用结算模块
:return:
'''
print("Product List".center(40,"-"))
Spaces = " "*2
for Product_info in List_items:
Underlined = 20-len(Product_info[0])
print(Spaces,List_items.index(Product_info)+1,Spaces,Product_info[0],"."*Underlined,Product_info[1])
print("-"*40) in_Numbering = input("Please enter the product number,[q]exit billing:").strip()
if in_Numbering.isdigit():
if int(in_Numbering) > 0 and int(in_Numbering)<= len(List_items):
Transaction_Calculations(in_Numbering)
else:
print("\033[31mThe item number does not exist!\033[0m")
else:
if in_Numbering == "q":
settlement()
else:
print("\033[31mInput Error!\033[0m") def Transaction_Calculations(Numbering):
'''
加入购物车模块,判断用户余额是否足够购买商品
'''
global user_in_money
user_in_money = int(user_in_money)
Numbering = int(Numbering)
Pu_confirmation = input("Product \033[32m%s\033[0m Whether to add to cart(y/n):"%List_items[Numbering-1][0]).strip()
if Pu_confirmation == "y":
if user_in_money >= List_items[Numbering-1][1]:
User_shopping_cart.append(List_items[Numbering-1])
user_in_money = user_in_money - List_items[Numbering-1][1]
print("Product %s Added Cart, Current Balance %s¥"%( List_items[Numbering-1][0],user_in_money))
else:
print("The balance is insufficient, the commodity price \033[31m%s\033[0m¥,lacks \033[31m%s\033[0m¥"%(List_items[Numbering-1][1],List_items[Numbering-1][1]-user_in_money))
else:
print("\033[31mNot added to cart\033[0m") def settlement():
'''
结算模块
'''
if len(User_shopping_cart) == 0:
print("Shopping Cart There are no products, thank you patronage goodbye")
exit()
else:
print("Shopping list".center(50,"-"))
consumption = 0
new_user = []
[new_user.append(i) for i in User_shopping_cart if not i in new_user]
for user_cart in new_user:
number = User_shopping_cart.count(user_cart)
settlement_un = 15-len(user_cart[0])
to_settlement_un = 25 - settlement_un - len(str(user_cart[1])) - len(user_cart[0])
consumption += user_cart[1]*number
print(" "*5,user_cart[0],"."*settlement_un,user_cart[1],"¥","."*to_settlement_un,"%s个"%(number))
times = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
print(times.center(50,"-"))
print("Shopping cost \033[32m%s\033[0m¥, Current balance \033[32m%s\033[0m¥,Thank you to patronize!".center(50,"-")%(consumption,user_in_money))
exit() if __name__ == "__main__":
in_money()
购物车
python练习_购物车(简版)的更多相关文章
- python练习_购物车(2)
用python写了一个购物车程序,主要是练习,代码如下 主入口文件:main.py #!/usr/bin/env python # -*- coding:utf-8 -*- #先调用用户登录函数,在进 ...
- python学习_新闻联播文字版爬虫(V 1.0版)
python3的爬虫练习,爬取的是新闻联播文字版网站 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' __author__ = 'wyf349' _ ...
- Python练习_购物车_day6
第一次代码 (1) 输出商品列表,用户输入序号,显示用户选中的商品. 页面显示 序号 + 商品名称,如: 1 手机 2 电脑 (2): 用户输入选择的商品序号,然后打印商品名称 (3):如果用户输入的 ...
- python学习_新闻联播文字版爬虫(V 1.0.1版)
更新记录: 1.新增了headers头的随机获取: 2.新增了logging模块添加日志信息(学习用): #!/usr/bin/env python # -*- coding: utf-8 -*- ' ...
- 按行切割大文件(linux split 命令简版)
按行切割大文件(linux split 命令简版) #-*- coding:utf-8 -*- __author__ = 'KnowLifeDeath' ''' Linux上Split命令可以方便对大 ...
- Underscore源码阅读极简版入门
看了网上的一些资料,发现大家都写得太复杂,让新手难以入门.于是写了这个极简版的Underscore源码阅读. 源码: https://github.com/hanzichi/underscore-an ...
- python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学
首发于:python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=431 本文 ...
- 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算
<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...
- < 利用Python进行数据分析 - 第2版 > 第五章 pandas入门 读书笔记
<利用Python进行数据分析·第2版>第五章 pandas入门--基础对象.操作.规则 python引用.浅拷贝.深拷贝 / 视图.副本 视图=引用 副本=浅拷贝/深拷贝 浅拷贝/深拷贝 ...
随机推荐
- jQuery 查找带有某一属性的元素
$('*[name="username"]') 要在前面加个*表示所有的DOM,如果只是查找带有name属性的DOM的话则是这样的 $('*[name]')//其实, $('[ ...
- 密钥public/private key登陆linux
Public Key认证是什么这是一种认证方法,类似于常见的用户名密码认证方法.不同的是需要在客户端机器上保留一个很长很长的加密key,而在服务器端需要做出相应的配置.当客户端想要访问服务器时,服务器 ...
- iOS中利用UISearchBar实现搜索
先把源码贴出来 https://github.com/losedMemory/ZSSearchBar 这是我在github上写的一个Demo,大家可以看看 在大多数app中都会用到搜索功能,那么搜 ...
- Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- Cocos2dx 3.1.1 将一个2.X的项目改成3.1版本
最近在论坛上下载到了一个Cocos2dx的单机跑酷例子, 也不知道是2.x版的, 花了一天时间试着把他改成3.1.1的试试, 现在已经可以顺利编译的, 但是还是有Heap Free的问题,调试了好几天 ...
- Tomcat 静态部署 二步特别注意
一.修改server.xml 在Host 节点添加如下配置 <!-- path 为请求url地址 docBase 为项目文件绝对地址制定到WebContent根目录下 --> <Co ...
- Unity3d 开发之 ulua 坑的总结
相同的 lua 代码在安卓上能正常运行,但在 IOS 上可能不会正常运行而导致报红,崩溃等,我在使用 lua 编程时遇到的一些坑总结如下: 1. File.ReadAllText, 诸如以下代码在 i ...
- 不同版本的mysql字符集的默认编写
原来在5.1版本时,为了解决中文乱码问题设置默认字符集为utf8时,在my.ini内的 [mysql] 和 [mysqld] 项中都是写: default-character-set=utf8 到了5 ...
- python_json常用的方法
1. 什么是JSON? JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端 ...
- POJ3268Dijkstra
题意:给定n个点,m条边,求所有顶点中到顶点x的来回最短距离 分析:考虑到数据范围,选用Dijkstra,用Floyd会超时 #include <iostream> #include &l ...