这是个求助帖(已解决)

这真的是个求助帖子,自己解决感觉好爽

#求各位大佬给个答案吧,小菜鸡写不出来了,哈哈哈哈 写出来了,还是有点儿成就感的

这是题目
设计一个自动贩卖机
1.只接受1元、5元、10元的纸币或者硬币
2.可以投1元、5元、10元。最多不超过10元
3.可以买橙汁、椰汁、矿泉水、早餐奶,售价3.5、4、2、4.5
4.写个函数用来表示贩卖机的功能:用户投钱和选择饮料
5.判断之后,给用户吐出饮料并找零
首先啊,我是这么想的,把钱放到一个列表里,比如money = [1,5,10],然后,把饮料放到字典里面去,drink={“changzhi”:3.5,“yezhi”:4,“water”:2,“milk”:4.5"},然后用户在输入钱的时候,对钱进行一个判断,在列表里,继续执行,不在的话,就break,在的话,判断一下放入的钱(putin)跟要付的钱(total)的关系,大于呢,就找零,小于就继续放钱,正好就推出程序,然后代码时这样写的,但是不能运行,

def choosedrink():

drinks ={"changzhi":3.5,"yezhi":4,"water":2,"milk":4.5}

res=drinks.keys()
choose = input("choose your drink")
if choose in res:
    print("the drink you choose is",choose)
    print("the price you choose is {}".format(drinks[choose]))
else:
    print("bye")

choosedrink()
def putinmoney():
money =[1,5,10]
pay = 0
total = 0
putin = int(input(“putinyourmoney”))
if putin in money:
pay = pay +putin
else:
print(“对不起,只收1元、5元、10元,请重新投币”)
if pay == total:
print(“钱正好,不找零钱了”)

    elif pay < total:
        print("你买的饮料{}元,你投币{}元,还需投币{}元".format(total,pay,total-pay))
    else:
            print("你买的饮料{}元,你投币{}元,找零{}元".format(total,pay,pay-total))

putinmoney()

但是,下面的可以运行了

def tou_bi():
total_money=0#存储投币总额
while True:
money=input(“请投币:只接受1元、5元、10元的纸币或硬币”)
if money==‘1’ or money==‘5’ or money==‘10’:
total_money+=int(money)
choice=input(“是否继续投币,退出按n,按其他键继续”)
if choice==‘n’:
break
else:
print(“投币失败,支持1 5 10面值的纸币或硬币”)
choice=input(“是否继续投币,退出按n,按其他键继续”)
if choice==‘n’:
break
return total_money

#选择饮料
def buy_drink():
total_money=0#存储购买饮料总额
drinks={“1”:3.5,“2”:4,“3”:2,“4”:4.5}
while True:
drink=input(“选择:1:橙汁、2椰汁、3矿泉水、4早餐奶”)
if drink in drinks.keys():
total_money+=drinks[drink]
choice=input(“是否要继续选择?按y继续,按n退出”)
if choice==‘y’:
continue
elif choice==‘n’:
break
return total_money

def count_money():
#投币
total_money=tou_bi()
#选择饮料:
total_buy=buy_drink()

if total_money>total_buy:
    print("购买成功,找零{}".format(total_money-total_buy))

elif total_money==total_buy:
    print("购买成功,不找零")
else:
    print("购买失败!")

count_money()
这是结果
这是结果

猜你喜欢

转载自blog.csdn.net/minnersinger/article/details/88145908