> For I am not ashamed of the gospel; it is the power of God for salvation to everyone who has faith, to the Jew first and also to the Greek. For in it the righteousness of God is revealed through faith for faith; s it is written,"The one who is righteous will live by faith"
## 用Python計算
一提到計算機,當然現在更多人把她叫做電腦,這兩個詞都是指computer。不管什么,只要提到她,普遍都會想到她能夠比較快地做加減乘除,甚至乘方開方等。乃至于,有的人在口語中區分不開計算機和計算器。
那么,做為零基礎學習這,也就從計算小學數學題目開始吧。因為從這里開始,數學的基礎知識列位肯定過關了。
## 復習
還是先來重溫一下偉大時刻,打印hello world.
打開電腦,讓python idle運行起來,然后輸入:
~~~
>>> print 'Hello, World'
Hello, World
~~~
細心的看官,是否注意到,我在這里用的是單引號,[上次](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/102.md)用的是雙引號。兩者效果一樣,也就是在這種情況下,單引號和雙引號是一樣的效果,一定要是成對出現的,不能一半是單引號,另外一半是雙引號。
## 四則運算
按照下面要求,在ide中運行,看看得到的結果和用小學數學知識運算之后得到的結果是否一致
~~~
>>> 2+5
7
>>> 5-2
3
>>> 10/2
5
>>> 5*2
10
>>> 10/5+1
3
>>> 2*3-4
2
~~~
上面的運算中,分別涉及到了四個運算符號:加(+)、減(-)、乘(*)、除(/)
另外,我相信看官已經發現了一個重要的公理:
### 在計算機中,四則運算和小學數學中學習過的四則運算規則是一樣的
要不說人是高等動物呢,自己發明的東西,一定要繼承自己已經掌握的知識,別跟自己的歷史過不去。偉大的科學家們,在當初設計計算機的時候就想到列位現在學習的需要了,一定不能讓后世子孫再學新的運算規則,就用小學數學里面的好了。感謝那些科學家先驅者,澤被后世。
下面計算三個算術題,看看結果是什么
* 4 + 2
* 4.0 + 2
* 4.0 + 2.0
看官可能憤怒了,這么簡單的題目,就不要勞駕計算機了,太浪費了。
別著急,還是要在ide中運算一下,然后看看結果,有沒有不一樣?要仔細觀察哦。
~~~
>>> 4+2
6
>>> 4.0+2
6.0
>>> 4.0+2.0
6.0
~~~
不一樣的地方是:第一個式子結果是6,后面兩個是6.0。
現在我們就要引入兩個數據類型:整數和浮點數
對這兩個的定義,不用死記硬背,google一下。記住愛因斯坦說的那句話:書上有的我都不記憶(是這么的說?好像是,大概意思,反正我也不記憶)。后半句他沒說,我補充一下:忘了就google。
> > 定義1:類似4、-2、129486655、-988654、0這樣形式的數,稱之為整數 定義2:類似4.0、-2.0、2344.123、3.1415926這樣形式的數,稱之為浮點數
比較好理解,整數,就是小學學過的整數;浮點數,就是小數。如果整數寫成小數形式,比如4寫成4.0,也就變成了浮點數。
愛學習,就要有探索精神。看官在網上google一下整數,會發現還有另外一個詞:長整數(型)。顧名思義,就是比較長的整數啦。在有的語言中,把這個做為單獨一類區分開,但是,在python中,我們不用管這個了。只要是整數,就只是整數,不用區分長短(以前版本區分),因為區分沒有什么意思,而且跟小學學過的數學知識不協調。
還有一個問題,需要向看官交代一下,眼前可能用不到,但是會總有一些人用這個來忽悠你,當他忽悠你的時候,下面的知識就用到了。
**整數溢出問題**
這里有一篇專門討論這個問題的文章,推薦閱讀:[整數溢出](http://zhaoweizhuanshuo.blog.163.com/blog/static/148055262201093151439742/)
對于其它語言,整數溢出是必須正視的,但是,在python里面,看官就無憂愁了,原因就是python為我們解決了這個問題,請閱讀拙文:[大整數相乘](https://github.com/qiwsir/algorithm/blob/master/big_int.md)
ok!看官可以在IDE中實驗一下大整數相乘。
~~~
>>> 123456789870987654321122343445567678890098876*1233455667789990099876543332387665443345566
152278477193527562870044352587576277277562328362032444339019158937017801601677976183816L
~~~
看官是幸運的,python解憂愁,所以,選擇學習python就是珍惜光陰了。
上面計算結果的數字最后有一個L,就表示這個數是一個長整數,不過,看官不用管這點,反正是python為我們搞定了。
在結束本節之前,有兩個符號需要看官牢記(不記住也沒關系,可以隨時google,只不過記住后使用更方便)
* 整數,用int表示,來自單詞:integer
* 浮點數,用float表示,就是單詞:float
可以用一個命令:type(object)來檢測一個數是什么類型。
~~~
>>> type(4)
<type 'int'> #4是int,整數
>>> type(5.0)
<type 'float'> #5.0是float,浮點數
type(988776544222112233445566778899887766554433221133344455566677788998776543222344556678)
<type 'long'> #是長整數,也是一個整數
~~~
## [](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/103.md#幾個常見函數)幾個常見函數
在這里就提到函數,因為這個東西是經常用到的。什么是函數?如果看官不知道此定義,可以去google。貌似是初二數學講的了。
有幾個常用的函數,列一下,如果記不住也不要緊,知道有這些就好了,用的時候就google。
**求絕對值**
~~~
>>> abs(10)
10
>>> abs(-10)
10
>>> abs(-1.2)
1.2
~~~
**四舍五入**
~~~
>>> round(1.234)
1.0
>>> round(1.234,2)
1.23
>>> #如果不清楚這個函數的用法,可以使用下面方法看幫助信息
>>> help(round)
Help on built-in function round in module __builtin__:
round(...)
round(number[, ndigits]) -> floating point number
Round a number to a given precision in decimal digits (default 0 digits).
This always returns a floating point number. Precision may be negative.
~~~
**冪函數**
~~~
>>> pow(2,3) #2的3次方
8
~~~
**math模塊**(對于模塊可能還有點陌生,不過不要緊,先按照下面代碼實驗一下,慢慢就理解了)
~~~
>>> import math #引入math模塊
>>> math.floor(32.8) #取整,不是四舍五入
32.0
>>> math.sqrt(4) #開平方
2.0
~~~
## 總結
* python里的加減乘除按照小學數學規則執行
* 不用擔心大整數問題,python會自動處理
* type(object)是一個有用的東西
- 第零部分 獨上高樓,望盡天涯路
- 嘮叨一些關于Python的事情
- 為什么要開設本欄目
- 第一部分 積小流,至江海
- Python環境安裝
- 集成開發環境(IDE)
- 數的類型和四則運算
- 啰嗦的除法
- 開始真正編程
- 初識永遠強大的函數
- 玩轉字符串(1):基本概念、字符轉義、字符串連接、變量與字符串關系
- 玩轉字符串(2)
- 玩轉字符串(3)
- 眼花繚亂的運算符
- 從if開始語句的征程
- 一個免費的實驗室
- 有容乃大的list(1)
- 有容乃大的list(2)
- 有容乃大的list(3)
- 有容乃大的list(4)
- list和str比較
- 畫圈還不簡單嗎
- 再深點,更懂list
- 字典,你還記得嗎?
- 字典的操作方法
- 有點簡約的元組
- 一二三,集合了
- 集合的關系
- Python數據類型總結
- 深入變量和引用對象
- 賦值,簡單也不簡單
- 坑爹的字符編碼
- 做一個小游戲
- 不要紅頭文件(1): open, write, close
- 不要紅頭文件(2): os.stat, closed, mode, read, readlines, readline
- 第二部分 窮千里目,上一層樓
- 正規地說一句話
- print能干的事情
- 從格式化表達式到方法
- 復習if語句
- 用while來循環
- 難以想象的for
- 關于循環的小伎倆
- 讓人歡喜讓人憂的迭代
- 大話題小函數(1)
- 大話題小函數(2)
- python文檔
- 重回函數
- 變量和參數
- 總結參數的傳遞
- 傳說中的函數條規
- 關于類的基本認識
- 編寫類之一創建實例
- 編寫類之二方法
- 編寫類之三子類
- 編寫類之四再論繼承
- 命名空間
- 類的細節
- Import 模塊
- 模塊的加載
- 私有和專有
- 折騰一下目錄: os.path.<attribute>
- 第三部分 昨夜西風,亭臺誰登
- 網站的結構:網站組成、MySQL數據庫的安裝和配置、MySQL的運行
- 通過Python連接數據庫:安裝python-MySQLdb,連接MySQL
- 用Pyton操作數據庫(1):建立連接和游標,并insert and commit
- 用Python操作數據庫(2)
- 用Python操作數據庫(3)
- python開發框架:框架介紹、Tornado安裝
- Hello,第一個網頁分析:tornado網站的基本結構剖析:improt模塊、RequestHandler, HTTPServer, Application, IOLoop
- 實例分析get和post:get()通過URL得到數據和post()通過get_argument()獲取數據
- 問候世界:利用GAE建立tornado框架網站
- 使用表單和模板:tornado模板self.render和模板變量傳遞
- 模板中的語法:tornado模板中的for,if,set等語法
- 靜態文件以及一個項目框架
- 模板轉義
- 第四部分 暮然回首,燈火闌珊處
- requests庫
- 比較json/dictionary的庫
- defaultdict 模塊和 namedtuple 模塊
- 第五部分 Python備忘錄
- 基本的(字面量)值
- 運算符
- 常用的內建函數
- 擴展閱讀(來自網絡文章)
- 人生苦短,我用Python