首先,在这里提一下这个被反复说起无数遍的问题:
一年365天,每天进步1‰,累计进步多少呢?
一年365天,每天退步1‰,累计退步多少呢?
这个问题如果作为数学问题是很简单的,我们先以千分之一为例,保留2位小数,建立第一个代码:
import math
dayup = math.pow(1.001, 365)
daydown = math.pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}.".format(dayup, daydown))
输出结果如下:
可以看到,如果选用1‰的话,得到的这个结果,这就是大多数努力的人每一年的正常努力的成果。如果我们想把每天的进步空间修改一下,在pow函数后面一直不断修改就太麻烦了。这个时候如果我们可以另加一个变量,那么直接进行变量的修改就好了,我们把这个变量命名为dayfactor,如下代码所示:
import math
dayfactor = 0.005
dayup = math.pow(1+dayfactor, 365)
daydown = math.pow(1-dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}.".format(dayup, daydown))
输出结果如下:
我们在修改后的函数里面把每天的进步值改成了千分之五,可以看到,相比于千分之一,有了一个质变,不过每天进步千分之五,你能够完成吗?
我们再试着把dayfactor改成0.01,猜猜结果是什么???
import math
dayfactor = 0.01
dayup = math.pow(1+dayfactor, 365)
daydown = math.pow(1-dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}.".format(dayup, daydown))
输出结果如下:
一年下来整整提高了37倍!是不是很惊人!
但是现实中呢?我们有周末、有节假日,并不是每天都在学习。可能工作的时候保持每天1%的进步,休息的时候就会有1%的退步。既然这样,怎么计算一年后的提升呢?
其实这个问题稍加思考还是比较简单的,实现方式也有很多种,可能一些初中生使用一行数学算式就可以表达出来。我们以每周工作5天、休息两天为例,给出代码如下所示:
dayup = 1.0
dayfactor = 0.01
for i in range(365):
if i % 7 in [6,0]:
dayup = dayup*(1-dayfactor)
else:
dayup = dayup*(1+dayfactor)
print("向上5天向下2天的力量:{:.2f}.".format(dayup))
输出结果如下:
仔细看,即便周末休息,依然有很大的进步,足足4倍多啊。但是相比每天都进步1%的37倍当然差的很远,这就是持续的力量。
最后我们来思考一个问题,如果有两个人Aelos和Roban,Aelos保持每天1%的进步(包括周末),而Roban周末选择休息(周末退步1%),在两个人基础一样的情况下,Roban需要在工作日的时候进步多少才能保持与Aelos同步呢?
代码如下:
def dayUP(df):
dayup = 1
for i in range(365):
if i % 7 in [6,0]:
dayup = dayup*(1 - 0.01)
else:
dayup = dayup*(1 + df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
dayfactor += 0.001
print("工作日每天的努力参数是:{:.3f} ".format(dayfactor))
简单解释一下:主要看def-while的框架这一Python的主要形式,def设计函数(注意加:),df为传参,while给定初始值,然后不断增加千分之一,直到达到A的效果为止。
输出结果如下:
也就是说,Roban需要在工作日的时候付出双倍的努力,才能休息,不知道这个时候Roban会不会想:我还不如在周末的时候也付出1%的努力呢。
但是反过来想想,我们以双倍的努力(0.019)在周末也这么做,一年后的结果是多少,结果是pow(1.019,365)=962.891!
不管怎样,学习与休息都取决于你个人的选择,但请大家牢记天天向上的力量!