确实想了很久才想出来,解决方案如下:
补充:反思了一下,之前的卡顿是因为一直没有找到突破口,感觉变量太多,不知道以哪个作为循环的终止条件。
后来想通了,就用当前还有多少啤酒作为循环终止条件。因为只要有酒就会继续喝,只要喝就会产生空瓶子,只要空瓶子足够多,就会继续有酒喝。
# -*- coding: UTF-8 -*-
"""
Created on 2017/3/12
@author: cat
“ 有1000瓶啤酒,每喝完一瓶得到一个空瓶子,每3个空瓶子又能换1瓶啤酒,
喝掉以后又得到一个空瓶子。问总共能喝多少瓶啤酒?还剩多少空瓶子”
"""
def compute(beer_count):
drink = 0 # 表示一共喝了多少瓶
c_drink = beer_count # 每次可以喝多少瓶 | 第一次,给多少瓶,喝多少瓶
rest = 0
while c_drink > 0:
drink += c_drink
rest += c_drink
c_drink = rest / 3
rest %= 3
return drink, rest
print str(compute(1000))
计算结果如下:
(1499, 2)
- 思路如下:
- 要计算一共喝了多少,一定要计算每次可以喝多少
- 空瓶子每次都在变化,每次可以喝的啤酒数量也在变化
- 只要还有一瓶酒,就可以继续喝。
created by python