• 自动贩卖机购买饮料


    功能要求:

    (1)1,5,10元纸币或硬币

    (2)饮料只有橙汁,椰汁,矿泉水,早餐奶,售价分别为3.5,4,2,4.5

    (3)实现功能:用户投钱和选择饮料,并通过判断之后,给用户吐出饮料和零钱

    思路1:

    (1)先选择商品

    (2)先投币

    缺陷:1次只能购买一瓶饮料

    def vending_machine():
        data = {'橙汁':3.5,'椰汁':4,'矿泉水':2,'早餐奶':4.5}
        choose = input('请输入你要购买的饮料或投入1,5,10元纸币或硬币:')
        # 先选择商品
        if choose in data.keys():
            price = data[choose]
            print("{0}的售价为:{1}元".format(choose,price))
            money =int(input("请投入1,5,10元纸币或硬币:"))
            while money not in (1, 5, 10):
                money = int(input("支付投放无效,请投入1,5,10元纸币或硬币:"))
                break
            if money < price:
                print("投放金额不足,还差{0}元,请继续投放".format(price - money))
                money1 = int(input("请继续投入1,5,10元纸币或硬币:"))
                while money1 not in (1, 5, 10):
                    money1 = int(input("支付投放无效,请投入1,5,10元纸币或硬币:"))
                    break
                money += money1
            if money == price:
                print("请取出你的{0}饮料".format(choose))
            elif money > price:
                print("请取出你的{0}饮料".format(choose))
                print("请取出你的找零{0}".format(money - price))
        # 先投钱
        else:
            money = int(choose)
            if money in (1, 5, 10):
                drink = input("请选择你想要的饮料:")
                price = data[drink]
                print("{0}的售价为:{1}元".format(drink, price))
                while money < price:
                    print("投放金额不足,还差{0}元,请继续投放".format(price - money))
                    money1 = int(input("请继续投入1,5,10元纸币或硬币:"))
                    while money1 not in (1, 5, 10):
                        money1 = int(input("支付投放无效,请重新投入1,5,10元纸币或硬币:"))
                        break
    
                    if money1 in (1, 5, 10):
                        money += money1
                    break
                if money == price:
                    print("请取出你的{0}饮料".format(drink))
                elif money > price:
                    print("请取出你的{0}饮料".format(drink))
                    print("请取出你的找零{0}".format(money - price))
                else:
                    print("投放无效,请重新投入1,5,10元纸币或硬币:")
    
            else:
                print("投放无效,请输入你要购买的饮料或投入1,5,10元纸币或硬币:")
                vending_machine()
    
    vending_machine()

     测试结果:

     方法2:

    drinks = {'1':3.5,'2':4,'3':2,'4':4.5}
    # 用户选择饮料
    total = 0 # 存储购买饮料的总金额
    while True:
        choose = input("请选择你要购买的饮料:1:橙汁,2:椰汁,3:矿泉水,4:早餐奶 q:退出")
        if choose in drinks.keys():
            total += drinks[choose]
        elif choose == 'q':
            print("退出选择饮料")
            break
        else:
            print("你输入的选项不存在")
    
    # 用户投币
    toubi = 0 # 投币总额
    while True:
        money = input("请继续投入1,5,10元纸币或硬币,按q退出投币!")
        if money in ('1','5','10'):
            toubi += int(money)
            if toubi>total:
                print("你刚刚购买的{0}元饮料,你已支付{1}元,找零{2}".format(total,toubi,toubi-total))
                break
            elif toubi<total:
                print("你刚刚购买的{0}元饮料,你已支付{1}元,还需支付{2}".format(total, toubi,total-toubi))
            else:
                print("你刚刚购买的{0}元饮料,你已支付{1}元,已支付完毕".format(total, toubi))
                break
    
        elif money =='q':
            print("退出投币")
            break
        else:
            print("你输入的选项不存在")

    测试结果:

  • 相关阅读:
    activiti笔记三 Activiti问题重现
    [转]电子商务文件存储及读取服务的设计和开发思路
    powerdesigner设置mysql唯一键,非主键
    git使用笔记
    activiti笔记二:用户任务
    解决方案:elipse一直loading descriptor for...
    activiti笔记一:流程图xml文件
    RabbitMq汇总
    docker汇总
    Zookeeper
  • 原文地址:https://www.cnblogs.com/kite123/p/11691347.html
Copyright © 2020-2023  润新知