用if和while写一个购物代码

自己用if和while写了一个算是购物的代码玩玩,首先是输入购物卡余额(只是虚拟,现实一般是最后刷卡),然后选择商品,当余额不足时会提示你,并且可以输入数字充值余额,如果不充值就会退出循环。

用了if、while、格式化输出(个人觉得这种情况用%s会比format好用,代码量会少一些)以及一些dict、list的操作方法,list去重用的是转为set再转list的方法。

这个购物代码也可以扩展,比如在外面再套一个大框架,分为管理员入口和顾客入口。

管理员通过预设的账户密码登陆后可以增加删除商品(增加建议用dict[key],如果是setdefault出现重复key会无法更新;删除用pop可以实现类似的上下架功能,可以用get查重再上架,也可以使用del dict[key]直接永久删除)

顾客区域通过输预设的购物卡号和密码来进入,余额可以改为购物卡预设而非手动输入,每次购物完成再把购物卡余额也进行更改,余额不足也可以改为删除余额不足的购物卡号,充值相当于新增了一个购物卡,可以使用dict内嵌套list来实现购物卡的管理(增删改)

这种拓展有兴趣的也可以在我的代码基础上改改(我不写绝对不是因为懒....口亨~)

代码如下:

ware = {1:['游艇',60],2:['飞机',80],3:['火箭',110],4:['别墅',190],5:['豪宅',300]}
shop = []
pay = 0

while 1:
    money = input('请输入您的购物卡余额(数字):\n>>>').upper().strip()
    if money.isdigit():
        print('输入成功,您现在可以选购商品了!')
        print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n')
        money = int(money) 
        break

else:
    print('输入有误请重新输入')

while 1:  
        for x,y in ware.items():
            print('\n商品序号:%d,商品名称:%s,商品价格:%d元。'%(x,y[0],y[1])) 

        need = input('\n请输入您需要的商品序号,按Q退出:\n>>>').upper().strip()

        if need.isdigit():
            need = int(need)
            if ware.get(need):
                pay = pay + int(ware[need][1])
                if money < pay:
                    print('\n您的余额不足,请充值')
                    yorn = input('\n如需充值请输入:‘Y’,不充值请按其他键\n>>>')
                    if yorn.upper().strip() =='Y':
                        while 1:
                            recharge = input('请输入充值金额\n>>>').strip()
                            if recharge.isdigit():
                                money = money + int(recharge)
                                print('充值成功,充值金额%s元'%(recharge))
                                break   
                            else:
                                print('输入错误,请重试')
                    else:
                        print('感谢惠顾,欢迎下次光临!')
                        break


                shop.append(ware[need][0])
                shop = list(set(shop))
                
                if money == pay:
                    print('您将%s放入了您的购物车,价格为%d元'%(ware[need][0],ware[need][1]))
                    print('您现在已经购买了%s,总计%d元,您的余额已不足无法继续购物'%(shop,pay))
                    print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')

                if money > pay:
                    print('您将%s放入了您的购物车,价格为%d元'%(ware[need][0],ware[need][1]))
                    print('您现在已经购买了%s,总计%d元,余额还有%d元'%(shop,pay,money-pay))
                    print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
                    
            else:
                print('您输入的有误,请重新输入')
       
        elif need == 'Q':
            print('欢迎您下次光临')
            break
       
        else:
            print('您输入的有误,请重新输入')

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值