今天学习了Python的数字类型及操作,之前学C语言时,也有类似内容,所以今天这些内容,概念上比较好理解。

虽然知识点不难,但在过程中,还是有惊喜的。

在天天向上力量的实例中,我领略了两个计算机思维,以及一个单词Grit。接下来还是结合代码,复盘一下重点,以及上面提到的收获。

天天向上,来自于毛爷爷的名言,好好学习,天天向上。

有人提出,如果每天进步1%,一年后可以提升多少?反之如果每天退步1%,一年后会退步多少?

这个问题在数学上很简单,就是1.01的365次方和0.99的365次方。在很多企业墙上,也见过类似的公式,前者的答案是37.78,后者的答案是0.03。强烈的对比可以看出,每天持续进步的力量非常大。

用Python计算也很简单,只需要用上基础的幂运算就可以。

接着老师在这个问题基础上举一反三,升级为复杂点的问题,以便讲解更多知识点。

一年365天,如果5天的工作日,每天进步1%,2天的休息日,每天退步1%,这种工作日向上的力量如何呢?

看上去复杂一些了,没法用简单的公式去计算。事实上如果硬要找规律,总结出一个数学公式,也是可以找到的。

但老师指出,这样做就是典型的数学思维,问题的解决大部分还是靠的人脑,计算机只是最后用来辅助计算。而用计算机解决问题,可以用一种计算思维的方式,先将问题抽象,抽象出问题的形式化逻辑,再进行自动化,将抽象的结果,通过程序自动完成,就可以很快的得到结果。

按照这种思维,解决这个问题的代码如下:

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))

其中for i in range(365):代表的是将i遍历365天,循环模拟365天这个过程。

而if i % 7 in [6,0]:代表i对7求余的时候,判断是否有余数为6和0的,如果有,显然就是休息日。余数如果不是这两个,就代表是工作日,分别计算即可。

计算的结果,工作日的力量为4.63,比起每天进步还是差了不少。

在天天向上问题进一步升级中,问题变成了有2个人,A每天进步1%,B休息日每天退步1%,问在工作日要进步到什么程度,才能赶上A的水平?

和前面提到的一样,如果用一种复杂的数学公式计算,当然也可以得到最后的答案,但不是我们利用计算机解决问题最好的方式。

计算机有一个很大的优势,就是计算能力超强,一些需要大规模计算的笨方法,在数学角度上不是最优的,但在计算机这里却非常实用。

上面的问题,就可以用不断试错的方式。给B一个进步的初始值,算出结果后和A比较,如果赶不上A,就加一点点,直到赶上A为止。

这样的计算量,如果手动去算,要算到天昏地暗,几乎是行不通的。而对于计算机来说,只要一瞬间就可以得到答案。这就是用计算机解决问题时,笨办法试错思维方式的优势。

实现的代码如下:

def dayUP(df):
    dayup = 1
    for i in range(365):
        if i % 7 in [6,0]:
            dayup = dayup*(1.0-0.01)
        else:
            dayup = dayup*(1.0+df)
    return dayup
dayfactor = 0.01
while dayUP(dayfactor)<37.78:
    dayfactor += 0.001
print("工作日的努力参数是: {:.3f}".format(dayfactor))

其中保留字def是用来定义函数,df是参数,是dayfactor的简写,也就是不断测试的B的工作日进步程度。

while是用来判断条件成立是循环执行,也就是B的最终结果不小于37.78时,才结束计算。

dayfactor += 0.001这句代码的含义,和dayfactor=dayfactor+0.001相同,只是为了代码更简洁。

最终的结果是0.019,也就是工作日每天进步1.9%,和每天进步1%的效果是一样。

 

上面的计算结果,还是给我很多思考的。我此时的行为,也能勉强算上是在学习进步。但在这学习的过程中,频次不算很高。我一度认为,只要总的学习时间够了,学习最终就会有想要的结果的。

但其实不对的,正所谓学如逆水行舟,不进则退,偶尔前进一些,再偶尔退后一些,晃晃悠悠,其实都在原地徘徊。

我们常说要刻意练习,其实更需要高频次的刻意练习。

嵩天老师在天天向上的力量实例后面,提到了Grit这个词,Grit译为坚毅,是对长期目标的持续激情和持久耐力。

Grit是获得成功的最重要的因素之一,早晨看到欧阳老师朋友圈,单是早起打卡这个行为,就打卡快两年了,着实让人敬佩。自己也一直觉得我这方面不是很强,还需要多多努力。

为了更深入地了解Grit这个词,我在网上又找了一些相关的资料。其中有个关于Grit的演讲视频,我反复看了几遍,觉得很有意义,放在下面分享一下。