jQuery火箭图标返回顶部代码

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
账号或密码错误
退出程序
购物车测试
复制代码

 

posted @   墨颜丶  阅读(219)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示
CONTENTS