一年365天,每天进步1%,累计进步多少呢?
一年365天,每天退步1%,累计退步多少呢?
这个问题如果转化为数学问题是很简单的,用Python写的话更简单和轻松。
我们先以千分之一为例,保留2位小数,建立第一个代码。
#DayDayUpQ1.py
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
输出为:
dayup= 1.44
daydown=0.69
可以看到,千分之一的话,得到的这个结果,还是很符合正常人的思维的。也是大多数努力的人每一年的正常努力的成果。
如果我们想把这个每天的进步空间修改一下,一直在pow函数后面一直不断修改就显得繁琐,这个时候我们可以另加一个变量,直接进行变量的修改就好了。
#DayDayUpQ2.py
dayfactor = 0.005
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
以看到我们在修改后的函数里面把每天的进步值改成了千分之五,得到的结果是
dayup =6.17, daydown =0.16
可以看到,相比于千分之一,有了一个质变,不过每天进步千分之五,对你能够完成嘛?
我们再把dayfactor改成0.01,猜猜结果是什么???
dayup =37.78,是不是一个很惊人的数字?(计算肯定是没问题的)
如果我们把时间拉长,从一年的365天改成两年的730天,再猜猜结果是什么?
答案是
dayup=1427.59
确实难以置信,但确实是正确的
下一个问题
但是我们平常的生活中通常是不会每天都在工作,每天都有进步的,比如我们通常会在工作日的时候学习,在周末的时候双休。这个时候可能工作的时候保持每天1%的进步,休息的时候会有1%的退步,这个时候怎么计算一年后的收益呢?
#DayDayUpQ3.py
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("工作日的力量:{:.2f} ".format(dayup))
我们把代码运行一下,看下结果是
4.63
依然有很大的进步,足足4倍多啊,但是比起每天都进步1%的37倍,是不是就差了很多呢?这是持续的力量
最后一个问题:
如果有两个人A和B,A保持每天1%的进步(包括周末),而B周末选择休息(周末退步1%),B需要工作日的时候进步多少才能保持与A同步呢?
考虑到数据量并不大,我们采用暴力穷举的方式来得到结果,来看程序
#DayDayUpQ4.py
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的效果为止
运行结果是 0.019,也就是说,B需要在工作日的时候付出双倍的努力,才能休息,不知道这个时候i会不会想,那不如在周末的时候也付出1%的努力呢?
但是反过来想想,我们以双倍的努力(0.019)在周末也这么做,一年后的结果是多少,结果是pow(0.019,365)=962.89!!!!
这取决于你的选择,但请牢记天天向上的力量!
————————————————
原文链接:https://blog.csdn.net/weixin_43943977/article/details/102099476