本質上計算機熟悉的是二進位,也就是我們常說的「0,1」代碼,所以無論是執行的命令還是數據本身,都必須轉化為0和1他們才會認知。而我們熟悉的是自然語言,熟悉的是十進位數字,所以在很多的情況我們補充理解一些在python中數值的一些操作手段。
一、案例分析
大家都會聽到這樣一句話:每天進步一點點,一年後將會收穫巨大。其實樹哥在朋友圈也看到過非常多的這樣的說法,不過具體的數值忘記了。我們可以通過這個案例來計算一下,每天進步一點點,一年後會有多大的差距?
案例:題目:如果一個人每天進步1%,一年後會進步多少?如果他每天退步1%,一年後會有多少退步?
分析:這是一個比較簡單的計算題,進步1%就是0.01, 1+0.01=1.01。 365天累計多少就變成了:
1.01的365次方。退步可以寫作0.99的365次方。
可以查詢一下,在python中,次方這樣的東西使用pow這個運算符來表示:pow(基礎數字,次方),也就是變成如下的兩句:
pow(1.01,365)pow(0.99,365)非常簡單吧?
不過,如果你問:如果我每天進步2%呢?那麼結果就會變成:
pow(1.02,365)pow(0.98,365)如果你還問,如果我每天進步3%,4%,或者只是進步0.5%呢,那麼這就可以改成:
input(「您準備每天進步或退步的幅度是百分之:」)pow(1+dayfactor,365)pow(1-dayfactor,365)可以看到,通過一個變量dayfactor容許用戶的輸入進步和退步的幅度,來計算最後的結果。可以編寫的程序如下圖:
當我們每天進步或者退步1%時,執行的結果如下:
這意味著:積跬步以至千裡,積懈怠以至深淵!
當我們每天進步或者退步2%時,執行的結果如下:
這意味著:每天你比別人更努力一點點,其實已經差距上千倍。
可以嘗試輸入這幾行代碼,並執行看一下效果。
二、python基礎數值操作
數值類型
整數類型
整數類型很好理解,我們日常生活中時常用的。
在程序的第一句,我們期待用戶輸入的也是整數。
其中,我們在第三條語句使用了pow()這樣的函數,函數中可以使用整數,例如:
pow(2,3),就是說,2的3次方。
那麼:pow(2,power(2,3))是什麼意思呢?相當於第二個參數也利用pow函數代表了。
pow(2,pow(2,3))相當於 pow(2,8)
我們這裡說的整數都是十進位,實際上在python中還支持其他的表現方式:
十進位:正常寫:365二進位:0b010,0B110. B是binary的縮寫。八進位:0O223,0o456. O是Octal的縮寫。十六進位:0x3c X是Hexadecimal的縮寫。浮點數
python中的浮點數有點相當於數學中的實數的概念,有小數的概念。
不過需要說明的是:
在計算機內使用二進位表示小數,所以不能完全相當於十進位。
這句話是什麼意思呢?
例如:十進位數0.1,無法用二進位01代碼完全精準表示,使用若干位的二進位表示出來的數字可以無限接近十進位數,但不能完全等於0.1。
這就帶來了一個有意思的現象:
0.1+0.2 = 0.3 算式成立,不過 0.1+0.2 == 0.3 卻是False。
第一個算式成立的原因只是把後面的小數進行四捨五入了而已,就像我們在上面案例中,每日減少0.02最終結果等於0一樣:
其實,計算的結果是:0.006; 因為我們有取兩位小數,才成了0。
在語句中,{:.2f} 的含義就是:format中的變量dayup放在這裡,並取小數點後面兩位。
但我們進行判斷的時候(「==」在python中是否相當的意思做判斷使用),就會發現0.1+0.2 其實與0.3並不完全相等。
這個時候,只要像案例程序四捨五入一下,就可以了,如下:
round(0.1+0.2,2) == 0.3 結果為 True。
驗證圖如下:
數值運算
簡單來說,就是加減乘除求商求餘次方等:
+:x+y 10+3 = 13-:x-y 10-3 =7*: x*y 10*3=30/: x/y 10/3 = 3.33333333//: x//y 10//3 = 3 求商去餘%:x%y 10%3 = 1 求餘數**: x**y,代表x的y次冪 =pow(x,y)其中,python還提供了一種增強型操作方式:
x += y, 相當於:x = x+yx -= y, 相當於:x = x -y其它的都與此類似。數值運算函數
在我們的案例中,我們已經使用了pow(x,y)的函數。因為有了這麼多的函數,所以在數值運算的時候,可以直接引用就會比較方便:
pow(x,y)求x的y次方round(x,y)對x進行小數y位的四捨五入取值。max(x1,x2....xn)在數字列表中找到最大的數字min(x1,x2....xn)在數字列表中找到最小的數字divmod(x,y)求商和餘數int(x)求x的整數
總結:計算機比較擅長解決計算性問題,所以對於數值的操作是我們必須要了解的知識。我們通過一個非常簡單的案例:每天進步一點點來學習一下數值的一些操作知識,同時也讓我們再次感悟到:每天都進步一點點的力量,每天進步百分之一,可以比原來增長37倍,如果每天進步2%,那麼就可以比原來增長1000多倍。