k1227417422 2022-10-12 21:13 采纳率: 0%
浏览 134
已结题

python购物车问题

python,希望能帮我找一下下面代码中存在的bug,并且能提出解决办法,最好是直接能有个新的代码

'''原程序
https://www.cnblogs.com/zhangxinqi/p/7593011.html'''
'''登陆购物车:'''
#!/usr/bin/env python 
#coding:utf8 
#file:Administrator 
#time:20170926 

import sys,os

#用户密码字典 
name_pass = {'user1': '123', 'user2': '456', 'user3': '789'}
#商品列表 
shop_list = [
    ['iphone7', 6500],
    ['iphone6', 4500],
    ['金立s10', 3400],
    ['华为r79', 2888],
    ['魅族NOTE5', 1888],
    ['oppoR9', 3600], ]

shop_out = [] #购物车 
all_kaixiao = 0 #统计值 
#统计三次用户错误锁定 
count = 0

for i in range(10):
    name_input = input('请输入用户名:')
    if name_input in name_pass.keys(): #判断用户存在否 
        passwd_input = input('请输入密码:')
        if passwd_input == name_pass[name_input]: #判断对应用户密码 
            print('恭喜登陆成功!')            
            break
        else:
            if count > 1:
                print('3次输入错误,您账号已锁定')
                break
            print('{}用户名不存在或密码错误,请重新输入!'.format(name_input)) 
            count += 1
    else:
        print('{}用户不存在'.format(name_input))
        continue
money = eval(input('请输入你的预购金额:'))

print('++++++++++商品清单++++++++++++++')
for num, i in enumerate(shop_list, 1):
    if isinstance(i, list):
        shop_li = i[0]+"\t"+str(i[1])
        print(num, shop_li)
    else:
        print(i)
print('q 退出\n p 打印清单') 
while True:
    shop_name = input('\n请输入要购买的商品编号:')
    shop_name = str(shop_name)

    if shop_name == 'q':
        exit()
    elif shop_name == 'p':  #打印购物明细
        print('------购物明细------')
        for number, i in enumerate(shop_out, 1):
            if isinstance(i, list):
                hehe = i[0]+":"+str(i[1])
                print(number, hehe)
            else:
                print(number, i)
        print('---总计金额:%s---' % (all_kaixiao))
        continue   #跳出循环,不然会输出非法信息
    if shop_name.isdigit() == 1:  #判断是否为数字
        shop_name = int(shop_name)
    else:
        print('您的输入非法,请重新输入')
        continue
    unm1 = int(len(shop_list))
    if shop_name not in range(1, unm1+1):  #判断输入商品编号是否在序列中
        print('输入有误,请重新输入!')
        continue
    else:
        price = int(shop_list[shop_name - 1][1])  #商品单价
        if money < price:
            print('您的金额不足,无法购买')
            continue
        money = money - price  # 剩余金额
        out = shop_list[shop_name - 1][:]  # 购买商品信息
        shop_out.append(out[:])  # 加入购物车
        all_kaixiao += price  #汇总消费
        print('您购买的商品是:{}单价:{}元'.format(*out))
        print('您还可以消费:{}'.format(money))

  • 写回答

5条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2022-10-12 21:33
    关注
    获得2.70元问题酬金

    你的代码整体缩进应该有问题,我已全部修改并跑通,贴了运行图片,另位代码不需要sys和os模块,可以删掉。记得采纳哦!

    #统计三次用户错误锁定
    count = 0
    #用户密码字典
    name_pass = {'user1':'123','user2':'456','user3':'789'}
    #商品列表
    shop_list = [
        ['iphone7',6500],
        ['iphone6',4500],
        ['金立s10',3400],
        ['华为r79',2888],
        ['魅族NOTE5',1888],
        ['opppR9',3600],
    ]
    
    for i in range(10):
        name_input = input('请输入用户名:')
        if name_input in name_pass.keys():  #判断用户存在否
            passwd_input = input('请输入密码:')
            if passwd_input == name_pass[name_input]: #判断对应用户密码
                print('恭喜登陆成功!')
                break
            else:
                if count > 1:
                    print('3次输入错误,您账号已锁定')
                    exit()
                print('{}用户名不存在或密码错误,请重新输入!'.format(name_input))
                count += 1
        else:
           print('{}用户不存在'.format(name_input))
           continue
    
    money = eval(input('请输入你的预购金额:'))
    shop_out = []  #购物车
    all_kaixiao = 0   #统计值
    while True:
        print('++++++++++商品清单++++++++++++++')
        for num,i in enumerate(shop_list,1):
            if isinstance(i,list):
                shop_li = i[0]+"\t"+str(i[1])
                print(num,shop_li)
            else:
                print(i)
        print('q:退出\np:打印清单')
        shop_name = input('请输入要购买的商品编号:')
        shop_name = str(shop_name)
    
        if shop_name == 'q':
            exit()
        elif shop_name == 'p':  #打印购物明细
            print('------购物明细------')
            for number,i in enumerate(shop_out,1):
                if isinstance(i,list):
                    hehe = i[0]+":"+str(i[1])
                    print(number,hehe)
                else:
                    print(number,i)
            print('---总计金额:%s---'%(all_kaixiao))
            continue   #跳出循环,不然会输出非法信息
        if shop_name.isdigit() == 1:  #判断是否为数字
            shop_name = int(shop_name)
        else:
            print('您的输入非法,请重新输入')
            continue
        unm1 = int(len(shop_list))
        if shop_name not in range(1,unm1+1):  #判断输入商品编号是否在序列中
            print('输入有误,请重新输入!')
            continue
        else:
            price = int(shop_list[shop_name - 1][1])  #商品单价
            if money < price:
                print('您的金额不足,无法购买')
                continue
            money = money - price  # 剩余金额
            out = shop_list[shop_name - 1][:]  # 购买商品信息
            shop_out.append(out[:])  # 加入购物车
            all_kaixiao +=price  #汇总消费
            print('您购买的商品是:{}单价:{}元'.format(*out))
            print('您还可以消费:{}'.format(money))
    

    img

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络