某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”
因为三个空汽水瓶可以换一瓶汽水,即三个空汽水瓶=一个空汽水瓶和汽水本身
所以汽水本身=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)
运行结果: