Python之旅:购物车、三级菜单
1、购物车程序#
#需求:
# 用户名和密码存放于文件中,格式为:egon|egon123
# 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
# 允许用户根据商品编号购买商品
# 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
# 可随时退出,退出时,打印已购买商品和余额

#coding:utf-8 #购物车程序 #需求: # 用户名和密码存放于文件中,格式为:egon|egon123 # 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 # 允许用户根据商品编号购买商品 # 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 # 可随时退出,退出时,打印已购买商品和余额 conut=0 enter=0 shopping=[] while True: xuanze=input('''欢迎登陆网上商城,新用户请输入编码 1 注册 老用户请输入编码 2 登陆 >>> ''').strip() # 注册模块 conut=0 if xuanze=='1': while conut < 3: name = input('请输入你要注册的账号 >>> ').strip() passwd = input('请输入你要注册的密码 >>> ').strip() with open('user.txt',mode='rt',encoding='utf-8') as user: for i in user: nn=i.strip().split('|') names=nn[0] if name == names: print('该账户已注册,请输入 2 直接登陆') conut = 6 break else: with open('user.txt', mode='at', encoding='utf-8') as zhuce: zhuce.write(name+'|'+passwd+'\n') print('注册成功!') break #登陆模块 elif xuanze=='2': conut=0 while conut < 3: name=input('请输入你的账号 >>> ') passwd=input('请输入你的密码 >>> ') with open('user.txt',mode='rt',encoding='utf-8') as user: for i in user: nn = i.strip().split('|') names = nn[0] passwds=nn[1] if name == names: if name == names and passwd==passwds: print('登陆成功') while enter != '2': msg = [ ('lenovo', 1200), ('dell', 1600), ('mac', 1800) ] money = input('请输入你的工资 >>> ').strip() if money.isdigit(): money = int(money) else: print('非法输入,请输入纯阿拉伯数字工资') continue while True: print(msg) choice = input('请输入你购买的商品编号 >>> ').strip() if choice.isdigit(): choice = int(choice) - 1 else: print('商品编号超数,请输入正确的编号(1,2,3)') continue if choice > 3: print('商品编号超数,请输入正确的编号(1,2,3)') continue if money >= msg[choice][1]: shopping.append(msg[choice]) money = money - msg[choice][1] print('已加入购物车', [shopping], '您的余额还剩余:', [money]) enter = input('是否继续购买商品,退出请摁2').strip() if enter == '2': print('欢迎下此光临') conut=6 break else: print('您购买的商品价格为', msg[choice][1], '您的余额为', money, '无法购买此商品,请充值') conut = 6 enter='2' break else: print('非法输入,请输入纯阿拉伯数字编号') else: conut+=1 print('账号或密码错误') else: print('退出程序') break else: print("输入的编号非法,请输入正确的编号。\n") continue

###商品程序测试 ###测试注册、登陆、非法输入、金额 ###测试注册 欢迎登陆网上商城,新用户请输入编码 1 注册 老用户请输入编码 2 登陆 >>> 1 请输入你要注册的账号 >>> apple 请输入你要注册的密码 >>> 123 注册成功! 欢迎登陆网上商城,新用户请输入编码 1 注册 老用户请输入编码 2 登陆 >>> 1 请输入你要注册的账号 >>> qqq 请输入你要注册的密码 >>> 123 注册成功! 欢迎登陆网上商城,新用户请输入编码 1 注册 老用户请输入编码 2 登陆 >>> 2 ###测试登陆 请输入你的账号 >>> apple 请输入你的密码 >>> 123 登陆成功 ###测试非法 请输入你的工资 >>> dadas 非法输入,请输入纯阿拉伯数字工资 请输入你的工资 >>> qwe 非法输入,请输入纯阿拉伯数字工资 请输入你的工资 >>> 3000 [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] ###测试非法 请输入你购买的商品编号 >>> aqsdas 商品编号超数,请输入正确的编号(1,2,3) [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] ###测试非法 请输入你购买的商品编号 >>> 123 商品编号超数,请输入正确的编号(1,2,3) [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] ###测试余额 请输入你购买的商品编号 >>> 1 已加入购物车 [[('lenovo', 1200)]] 您的余额还剩余: [1800] 是否继续购买商品,退出请摁23213 [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] 请输入你购买的商品编号 >>> 3 已加入购物车 [[('lenovo', 1200), ('mac', 1800)]] 您的余额还剩余: [0] 是否继续购买商品,退出请摁2 [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] 请输入你购买的商品编号 >>> 123 商品编号超数,请输入正确的编号(1,2,3) [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] 请输入你购买的商品编号 >>> 1 您购买的商品价格为 1200 您的余额为 0 无法购买此商品,请充值 退出程序 ###测试退出机制 欢迎登陆网上商城,新用户请输入编码 1 注册 老用户请输入编码 2 登陆 >>> 2 请输入你的账号 >>> apple 请输入你的密码 >>> 123 登陆成功 请输入你的工资 >>> 123123 [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] 请输入你购买的商品编号 >>> 1 已加入购物车 [[('lenovo', 1200)]] 您的余额还剩余: [121923] 是否继续购买商品,退出请摁2 [('lenovo', 1200), ('dell', 1600), ('mac', 1800)] 请输入你购买的商品编号 >>> 2 已加入购物车 [[('lenovo', 1200), ('dell', 1600)]] 您的余额还剩余: [120323] 是否继续购买商品,退出请摁22 欢迎下此光临 退出程序 ###密码错误超过3次退出 欢迎登陆网上商城,新用户请输入编码 1 注册 老用户请输入编码 2 登陆 >>> 2 请输入你的账号 >>> apple 请输入你的密码 >>> qwe 账号或密码错误 请输入你的账号 >>> apple 请输入你的密码 >>> qwe 账号或密码错误 请输入你的账号 >>> apple 请输入你的密码 >>> qwe 账号或密码错误 退出程序
作者: 墨颜丶
出处:https://www.cnblogs.com/moyand/p/8644919.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
分类:
Small program
, Python 之旅
标签:
Python基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端