1. 程式人生 > 實用技巧 >啤酒2元一瓶,2個空瓶能換一瓶,4個空瓶能換一瓶. 問: 10元最多能喝多少瓶?

啤酒2元一瓶,2個空瓶能換一瓶,4個空瓶能換一瓶. 問: 10元最多能喝多少瓶?

class Beer(object):
    def __init__(self, money, price_money, price_bottle, price_cover):
        self.money = money     # 錢數
        self.price_money = price_money   # 每瓶花的錢
        self.price_bottle = price_bottle  # 一瓶值的空瓶數
        self.price_cover = price_cover   # 一瓶值的瓶蓋數
        self.beer = self.money // self.price_money
        self.bottle = self.beer   # 瓶子
        self.cover = self.bottle   # 蓋子

    def __repr__(self):
        return f'喝酒數:{self.beer}, 剩下空瓶數:{self.bottle}, 剩下瓶蓋數:{self.cover}'

    def bottle_to_beer(self):
        while self.bottle >= self.price_bottle:
            add = self.bottle // self.price_bottle
            self.beer += add
            self.bottle += add
            self.cover += add
            self.bottle -= self.price_bottle * add

    def cover_to_beer(self):
        while self.cover >= self.price_cover:
            add = self.cover // self.price_cover
            self.beer += add
            self.bottle += add
            self.cover += add
            self.cover -= self.price_cover * add


if __name__ == '__main__':
    beer = Beer(money=10, price_money=2, price_bottle=2, price_cover=4)
    while beer.bottle >= 2 or beer.cover >= 4:
        beer.bottle_to_beer()
        beer.cover_to_beer()
    print(beer)