问题:2元一瓶酒,2个空瓶换一瓶,4个瓶盖换一瓶 问10块钱买几瓶酒??
最终喝到酒的数量
class Change:
def __init__(self,money):
self.money=money # 总共的钱
self.beer=money//2 # 买到酒的数量(第一次用钱买酒)
self.cap=0 # 瓶盖数量
self.bottle=0 # 空瓶数量
self.count=0 # 总共和了多少瓶酒
def ping(self):
new_beer=self.bottle//2 # 当前空瓶可换酒的数量
self.beer+=new_beer # 更新酒的数量
self.bottle-=(new_beer*2) # 将已使用的空瓶去除
def gai(self):
new_beer=self.cap//4 # 当前瓶盖换酒的数量
self.beer+=new_beer # 更新酒的数量
self.cap-=(new_beer*4) # 将已使用的瓶盖去除
def drink(self):
self.bottle+=self.beer # 最终空瓶 = 酒的数量+当前空瓶数量
self.cap+=self.beer # 瓶盖数量 = 酒的数量+当前瓶数量
self.count+=self.beer # 喝酒数量 = 酒的数量+已经喝的数量
self.beer=0 # 喝完后把酒的数量重置为0
def run(self):
while self.beer>0 or self.bottle>=2 or self.cap>=4:
self.drink() # 喝酒
self.ping() # 空瓶换酒
self.gai() # 瓶盖换酒
return '喝了%d瓶酒,剩余%d个瓶子,剩余%d个盖子'%(self.count,self.bottle,self.cap)
person=Change(10)
print(person.run()) # 喝了15瓶酒,剩余1个瓶子,剩余3个盖子