python 瓶盖换酒问题

问题: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个盖子
发布了34 篇原创文章 · 获赞 15 · 访问量 8134

猜你喜欢

转载自blog.csdn.net/weixin_46451496/article/details/104792776