Python解决换汽水问题

某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”

因为三个空汽水瓶可以换一瓶汽水,即三个空汽水瓶=一个空汽水瓶和汽水本身
所以汽水本身=2个空汽水瓶

def drink():
    while True:
        try:
            num = int(input())
            if num != 0:
                print(num//2)  # 整除2
        except:
            break
 
if __name__ == "__main__":
    drink()

10块钱买汽水问题,1块钱1瓶,2个空瓶换1个汽水,4个瓶盖换1个汽水,10块钱能买多少瓶汽水。

1.while循环


def buy_water_up(get,money,empty,cap):
    if money>0:
        print("有%3s块钱,购买了%3s瓶"%(money,money),end=':-----:')
        empty += money
        cap += money
        get += money
        money = 0
        print("此时数据:已经得到%3s瓶汽水,%3s块钱,手上%3s空瓶,手上%3s瓶盖"%(get,money,empty,cap))
    while empty > 1 or cap > 3:
        while empty > 1:
            print("有%3s空瓶,置换了%3s瓶"%(empty,empty//2),end=':-----:')
            get += empty // 2
            cap += empty // 2
            empty = empty // 2 + empty % 2
            print("此时数据:已经得到%3s瓶汽水,%3s块钱,手上%3s空瓶,手上%3s瓶盖"%(get,money,empty,cap))
        while cap > 3:
            print("有%3s瓶盖,置换了%3s瓶"%(cap,cap//4),end=':-----:')
            get += cap // 4
            empty += cap // 4
            cap = cap // 4 + cap % 4
            print("此时数据:已经得到%3s瓶汽水,%3s块钱,手上%3s空瓶,手上%3s瓶盖"%(get,money,empty,cap))
    if money>0 or empty>1 or cap>3:
        get = buy_water_up(get,money,empty,cap)
    return get
buy_water_up(0,10,0,0)

运行结果:
在这里插入图片描述

2.递归法

def get_sum(cap, body):
    ret = cap // 4 + body // 2  # 瓶盖和瓶身兑换的汽水数
    empty_cap = ret + cap % 4  # 兑换的汽水和剩下的瓶盖的个数之和
    empty_body = ret + body % 2  # 兑换的汽水和剩下的空瓶的个数之和
    if (empty_cap > 3) or (empty_body > 1):
        return ret + get_sum(empty_cap, empty_body)
    else:
        return ret
 
sum = 0
money = 0
money += int(input("金额:"))
sum += money / 2  # 两块钱一瓶汽水
bottle = int(sum + get_sum(sum, sum))   # 最终喝到的汽水总数
print(bottle)

运行结果:
在这里插入图片描述

发布了33 篇原创文章 · 获赞 0 · 访问量 923

猜你喜欢

转载自blog.csdn.net/nickyff/article/details/104835612