自动贩卖机购买饮料

功能要求:

(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))
        elif toubi<total:
            print("你刚刚购买的{0}元饮料,你已支付{1}元,还需支付{2}".format(total, toubi,total-toubi))
        else:
            print("你刚刚购买的{0}元饮料,你已支付{1}元,已支付完毕".format(total, toubi))

    elif money ==‘q‘:
        break
    else:
        print("你输入的选项不存在")

测试结果:

原文地址:https://www.cnblogs.com/kite123/p/11691347.html

时间: 2024-10-16 16:44:49

自动贩卖机购买饮料的相关文章

自动贩卖机VS无人门店:谁是真正的零售新风口?

原本在线上不断发力,让实体店几乎凋敝的电商,却忽然对线下兴趣大增.阿里疯狂入股.收购线下商超:京东要在全国范围内开设百万家便利店,仅在农村就将开设50万家--这一股浪潮,或将直接改变整个百货零售行业接下来的走势.而同样是在个风口之下,倡导无人管理且自动化运行的贩卖机.门店等,似乎也有将成为新趋势的迹象. 而且关注这一趋势,并不是只有急于开辟线下战场的电商,还有积极转型的传统企业.而自动贩卖机和无人门店究竟谁是真正的零售风口,也将在短兵相接中逐渐展现自己的潜力.或许,在接下来,大众将迅速体验到二者

【python实例】自动贩卖机

1 # 所有消费记录 2 customer_bill = [] 3 4 # 零售 5 def sale(): 6 print("=" * 38) 7 print("1. 乌龙茶 20".center(30)) 8 print("2. 茉莉花茶 80".center(30)) 9 print("3. 绿茶 8".center(30)) 10 print("4. 红茶 4.5".center(30)) 11 p

代写C程序、自动贩卖机C程序代写、代做C语言程序作业

问题描述 假设在某国存在[1,x1,x2,x3,...,xn]多种货币,该国的自动贩卖机在找零时要遵循一个原则--"找零的总张数最少".那么,该如何编写程序,帮助自动贩卖机自动 找零呢? 问题分析 解决这一问题的最直接思路是穷举法.假设需要找零Y元,那么就通过所有的小于Y的货币,列举出找零的所有方案,进而比较哪个总张数最少.这种思路需要在计算中 蕴含有大量的重复,时间复杂度极大.类似问题的一个有效解法是使用动态规划的思想来处理. 求解找零所需要最少货币数 以面值为1,5,10,25的货

自动清粪机的日常维护

自动清粪机在日常使用中很容易出现问题,特别是在脏了以后,也不易清洁,今天润生养殖设备就在这里为大家简单介绍下自动清粪机的日常维护方法. 1. 当自动清粪机清粪带跑偏接近头端被动滚筒边沿10mm时,可以通过拧紧涨紧杆上的螺栓调节,当清粪带往回移动三分之一的时候,要适当的放松螺栓,以防止清粪带回跑过头. 2. 当清粪带跑偏挨近被动滚筒边沿时,可以放开涨紧链条,将清粪带用手移动到被动滚筒的中间,再将涨紧链条安装在链轮上,然后用管钳拧紧六棱轴至能不动为止,最后上紧涨紧杆上的螺栓. 3. 如果自动清粪机出

BZOJ 1704: [Usaco2007 Mar]Face The Right Way 自动转身机( 贪心 )

贪心...先枚举k, 然后从左往右扫一遍, 发现位置p的牛的状态不符合就将 [p, p + k ) 的牛都转身, 假如p + k - 1 已经超过了最右边牛的位置那这个k就不符合要求. 符合要求的就可以用来更新answer.这个贪心的正确性是很显然的.前p - 1头牛都已朝前, 再改动它们也做不到更优; 而要让第p头牛转身, 那就只能让[p, p + k )的牛转身. 考虑如何判断位置p的牛的状态, 我们发现p的状态与它本身和[ p - k - 1, p )这个区间内的牛的转身次数有关, 因为转

背包式短信群发机购买

背包式短信群发机购买[电/薇135乄0150乄6506][Q群733860034][黑龙江一位县委原书记向市委书记行贿 被降为科员中国取消中资行和金融资管公司外资持股比例限制卡恩:C罗会让尤文变更强 支持拜仁砸钱买人印度裔医生性侵女患者却不用坐牢 美国人很气愤戴尔科技锦标赛首轮罗斯领先 伍兹米克尔森T57美国男子不满特朗普挨批 打14通电话扬言杀记者Uber在英国麻烦不断 为保牌照遭严厉监管"全上海寻找的"21岁男子已被抓:涉嫌多起诈骗边努力训练边疯狂尬舞 要被詹姆斯笑死了-gif92

自动AC机

首先,本博客只供娱乐,请不要用于大型考试中.如果被告了也不要怪我. 考虑评测的原理:10组或20组或更多的数据放在data文件夹里,lemon每次用一个.in文件读入到你的程序里,你的程序会跑出来答案到.out里,lemon再与data里的.out文件进行比对. 而这个可能称得上算法的东西主要是通过枚举找到当前测试的是哪一组数据,然后去data文件夹里找到.out文件并读入答案,输出答案.这样当然是对的. 首先深刻理解freopen这个函数: freopen("123.in",&quo

BZOJ1704: [Usaco2007 Mar]Face The Right Way 自动转身机

n<=5000个数0或1,每次可以连续对固定长度区间取反,目标把所有1变0,求一个取反区间的固定长度K使取反次数最少. 答案关于K不单调,因此枚举K,对每个K扫一遍区间,遇到1就把连续K个数反转,看最后K-1个数是否在这样一番操作后都为0.为什么?不知道. 区间取反后查询,用差分.n2可过. 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<cstdlib>

Mysql自动宕机:InnoDB: Cannot allocate memory for the buffer pool

今天早上上班,发现自己使用wordpress搭建的网站不能访问,报如下错误: Error establishing a database connection 赶紧登到自己阿里云服务器(centos7.4)查看mysql服务,通过ps -ef | grep mysql 发现已经没有了mysql进程. 首先要做的是查看mysql日志,通过vi /var/log/mysqld.log果然发现对应的错误异常: 2018-12-26T02:06:16.148626Z 0 [Note] Event Sch