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

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大慶,以潤之先生的話來共勉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章