一个很有意思的问题:“ 有1000瓶啤酒,每喝完一瓶得到一个空瓶子,每3个空瓶子又能换1瓶啤酒, 喝掉以后又得到一个空瓶子。问总共能喝多少瓶啤酒?还剩多少空瓶子”

    xiaoxiao2021-03-25  145

    确实想了很久才想出来,解决方案如下:

    补充:反思了一下,之前的卡顿是因为一直没有找到突破口,感觉变量太多,不知道以哪个作为循环的终止条件。

    后来想通了,就用当前还有多少啤酒作为循环终止条件。因为只要有酒就会继续喝,只要喝就会产生空瓶子,只要空瓶子足够多,就会继续有酒喝。

    # -*- 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

    转载请注明原文地址: https://ju.6miu.com/read-38564.html

    最新回复(0)