Python初学系列——天天向上的力量

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43943977/article/details/102099476

Python初学系列——天天向上的力量

在这里插入图片描述
引言:
这是在mooc上看到的一门python基础课程的一个实例,名字叫天天向上的力量,整个例子很简单,但我还是把它放在了这篇博文里面,一是给刚开始学习Python的小白,还是从从中学到Python最基本的东西,二是整个例子真的很有正能量,尽管这个问题已经被提问了无数次……

问题:持续的价值
这里要再次提到被反复说起无数遍的问题:
一年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!!!!
这取决于你的选择,但请牢记天天向上的力量!
在这里插入图片描述
恰逢70大庆,以润之先生的话来共勉。

猜你喜欢

转载自blog.csdn.net/weixin_43943977/article/details/102099476
今日推荐