Python学习(一):编写购物车
1、购物车流程图:

2、代码实现:
#!/usr/bin/env python
#coding=utf-8
ChoiceOne ='''
1.查看余额
2.购物
3.退出
'''
ChoiceTwo = '''
1.商品列表
2.已选择商品
3.结算
4.退出
'''
ShopList = [
["iPhone 7 Plus",6388],
["NBShoes",588],
["MacBook",13800],
["返回上一层",""],
]
#导入模块
import sys,fileinput
global UserName
global UserPass
def Login():
#设置尝试密码的次数为0
RetryNum = 0
#格式化输入的用户名
OldName = "Null"
#开始程序
while RetryNum < 3:
#输入用户信息
UserName = input("请输入用户名: ").strip()
UserPass = input("请输入密码: ").strip()
#打开用户信息文件
UserList = open("UserInfo","r")
#查看锁定的用户
UserLockF = open("LockUserFile","r")
#遍历锁定的用户有哪些
for LockUser in UserLockF.readlines():
#判断输入的用户是否已被锁定
if UserName == LockUser.strip("\n"):
sys.exit("用户已被锁定")
#遍历用户信息文件
for i in UserList.readlines():
#比对账户密码是否正确
if UserName == i.split(":")[0] and UserPass == i.split(":")[1].strip("\n"):
UserList.close()
UserLockF.close()
UserAcount = [0,UserName,i.split(':')[2],]
return UserAcount
else:
print("账号或密码错误!")
#密码不正确判断本次输入和上次输入用户名是否一致
if UserName == OldName:
RetryNum += 1
else:
RetryNum = 1
OldName = UserName
else:
#超过三次锁定用户
f = open("LockUserFile","a")
f.write(UserName+"\n")
f.close()
print("尝试密码过多,已被锁定!")
#初始化Login函数,并接受返回值,包括用户登录状态、用户名和账户余额
UserAcount = Login()
#print(UserAcount)
#创建空购物车列表
SelectShopList = []
#格式化已购商品总价
SelectShopTotal = 0
#如果Login函数执行成功接收的第一个返回值为0,开始购物车程序
while UserAcount[0] == 0:
print(ChoiceOne) #打印商品列表
SelectFirst = input("请输入你的选择: ").strip() #选择商品-第一次选择,并去除空格
if int(SelectFirst) not in range(1,4): #判断选择是否在可选范围内
print("输入错误,请重新输入。") #
continue #输入错误重新的输入
if int(SelectFirst) == 1:
print("你的余额是:",UserAcount[2]) #返回余额
continue #再次执行上面的循环
if int(SelectFirst) == 2: #选择的是进入商城
while True:
print(ChoiceTwo) #打印商城的功能列表
SelectSecond = input("请输入你的选择: ") #输入选择的商城功能
if int(SelectSecond) not in range(1,5): #判断选择是否在可选列表
print("输入错误,请重新输入。")
continue #输入错误返回重输
if int(SelectSecond) == 1: #选择商品界面
while True: #进入商城购物程序
for SL in ShopList:
print(ShopList.index(SL),SL[0],SL[1],) #打印所有商品
ShopSelect = input("请输入你要买的商品:").strip() #选择需要的商品
if int(ShopSelect) not in range(0,len(ShopList)): #判断选择的是否在可选范围
print("输入错误,请重新输入。")
continue #输入错误返回重新输入
elif int(ShopSelect) == len(ShopList)-1: #输入最后一个序列,返回上一级
break
else:
SelectShopList.append(ShopList[int(ShopSelect)][0]) #加入选择的商品到选择商品的列表中
SelectShopTotal += ShopList[int(ShopSelect)][1] #计算商品总额
print("你选择的商品有:") #打印所有选择的商品和价格
for i in SelectShopList:
print(i)
print("总价为: ",SelectShopTotal)
if int(SelectSecond) == 2: #查看已经选择的商品
if len(SelectShopList) == 0: #如果列表长度为一即没有选择任何商品
print("你没有选择任何商品。")
else:
for i in SelectShopList: #打印所有的商品
print(i)
print("总价为: ", SelectShopTotal)
if int(SelectSecond) == 3: #结算
if int(UserAcount[2]) >= SelectShopTotal: #如果余额大于所选商品的金额
UserBanlance = int(UserAcount[2]) - SelectShopTotal #计算剩余的余额
#打印所有购买的商品、总额、余额
print("你购买的商品有:%s,消费总额是:%s,你的账户余额是%s"%(SelectShopList,SelectShopTotal,UserBanlance))
for line in fileinput.input("UserInfo",inplace=1):
line = line.replace(UserAcount[2],str(UserBanlance),)
print(line,)
else:
print("你的钱不够了,请重新购买。") #余额不足以购买选择的商品
SelectShopList.clear() #清空购物车
continue
if int(SelectSecond) == 4: #退出
sys.exit("欢迎下次光临")
if int(SelectFirst) == 3: #退出
sys.exit("欢迎下次光临。")
代码示例
3、代码文件:
1)LockUserFile #用于锁定用户的文件
2)README #使用帮助
3)UserInfo #用户账号密码以及余额文件
test:test:1230
dukuan:dukuan:389352
Python学习(一):编写购物车的更多相关文章
- 从0开始的Python学习013编写一个Python脚本
通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本. 问题 需求: 我想要一个可以给我备份重要文件的程序. 需求分析: 首先文件是有存储路径,文件的路径和 ...
- Python学习之编写三级菜单(Day1,作业二)
作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...
- Python学习之编写登陆接口(Day1,作业一)
作业一:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定(下次登陆还是锁定) 知识点:while循环,for循环,文件操作,if判断,列表操作 思路: 1.登陆,三次登陆失败,锁定 ...
- Python学习笔记_购物车案例
goods_dic = { "iphone":6000, "ipad":3000, "T-shirt":100, "coffee& ...
- python之编写购物车(第二天)
作业: 编写购物车 具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商品的删除 4.用户余额的充值 5.用户购买完成进行 ...
- Python学习计划
---恢复内容开始--- Python学习计划 https://edu.csdn.net/topic/python2?utm_source=blog4 匠人之心,成就真正Python全栈工程师 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- python学习笔记-python解释器
刚开始学习python,首先要了解一下python解释器. 什么是python解释器? 编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执 ...
随机推荐
- mysql的复杂查询,连接数据库
1.MySQL的工具:Navicat 优点:方便2.数据库的导入 mysqldump -u用户名 -p密码 数据库名称 > 导出文集路径 #结构+数据 mysqldump -u用户名 -p密码 ...
- robotframework自动化系统:操作mysql数据库
随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作:但是在设备添加的时候,遇到了难题.添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息. ...
- Unity3D_GUI (1)--按钮控件
这是自己的第一篇记录自己的技术文章,自己还是个菜鸟,有错误之处还望大家能够多多指点. 下面记录的是自己在学GUI.Button的自己认知,这里用的是代码进行控制,当然当你学熟练了就可以直接使用GUI ...
- Django框架中的model(操作数据库)
什么是ORM ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复 ...
- 【LintCode·容易】用栈模拟汉诺塔问题
用栈模拟汉诺塔问题 描述 在经典的汉诺塔问题中,有 3 个塔和 N 个可用来堆砌成塔的不同大小的盘子.要求盘子必须按照从小到大的顺序从上往下堆 (如:任意一个盘子,其必须堆在比它大的盘子上面).同时, ...
- JavaWeb框架_Struts2_(七)----->文件的上传和下载
这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 1. 章节目录 Struts2文件上传 单文件上传 拦截器实现文件过滤 文件上传常量 ...
- mysql复习秘籍
mysql复习 一:复习前的准备 1:确认你已安装wamp 2:确认你已安装ecshop,并且ecshop的数据库名为shop 二 基础知识: 1.数据库的连接 mysql -u -p -h -u 用 ...
- C# 通过反射初探ORM框架的实现原理
背景: 以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#的ORM框架,所以就想着用反射简单的实现一下ORM ...
- Google 视频编码格式 VP9 究竟厉害在哪里
近期 Google 已经开始研究 VP10 了,VP10 是一个由 WebM 和 Motroska 包含的开放.免费视频编解码器.Google 也已利用 VP10 来处理 YouTube 4K 视频. ...
- vs2015 制作安装包额外需要安装的软件VSI_bundle
vs2015 制作安装包额外需要安装的软件VSI_bundle 下载地址:http://files.cnblogs.com/files/sdner/VSI_bundle.rar