一般編程的教材,都是要把所有的變量類型講完,然后才講語句。這種講法,其實不符合學習的特點。學習,就是要循序漸進的。在這點上,我可以很吹一通了,因為我做過教師,研究教育教學,算是有一點心得的。所以,我在這里就開始講授語句。
## 什么是語句
在前面,我們已經寫了一些.py的文件,這些文件可以用python來運行。那些文件,就是由語句組成的程序。
為了能夠嚴謹地闡述這個概念,我還是要抄一段[維基百科中的詞條:命令式編程](http://zh.wikipedia.org/wiki/%E6%8C%87%E4%BB%A4%E5%BC%8F%E7%B7%A8%E7%A8%8B)
> 命令式編程(英語:Imperative programming),是一種描述電腦所需作出的行為的編程范型。幾乎所有電腦的硬件工作都是指令式的;幾乎所有電腦的硬件都是設計來運行機器碼,使用指令式的風格來寫的。較高級的指令式編程語言使用變量和更復雜的語句,但仍依從相同的范型。
> 運算語句一般來說都表現了在存儲器內的數據進行運算的行為,然后將結果存入存儲器中以便日后使用。高級命令式編程語言更能處理復雜的表達式,可能會產生四則運算和函數計算的結合。
一般所有高級語言,都包含如下語句,Python也不例外:
- 循環語句:容許一些語句反復運行數次。循環可依據一個默認的數目來決定運行這些語句的次數;或反復運行它們,直至某些條件改變。
- 條件語句:容許僅當某些條件成立時才運行某個區塊。否則,這個區塊中的語句會略去,然后按區塊后的語句繼續運行。
- 無條件分支語句容許運行順序轉移到程序的其他部分之中。包括跳躍(在很多語言中稱為Goto)、副程序和Procedure等。
循環、條件分支和無條件分支都是控制流程。
## if語句
談到語句,不要被嚇住。看下面的例子先:
~~~
if a==4:
print "it is four"
else:
print "it is no four"
~~~
逐句解釋一番,注意看注釋。在這里給列為看官提醒,在寫程序的是由,一定要寫必要的注釋,同時在閱讀程序的時候,也要注意看注釋。
~~~
if a==4: #如果變量a==4是真的,a==4為True,就
print "it is four" #打印“it is four”。
else: #否則,即a==4是假的,a==4為False,就
print "it is not four" #打印“it is not four”。
~~~
以上幾句話,就完成了一個條件判斷,在不同條件下做不同的事情。因此,if語句,常被翻譯成“條件語句”。
條件語句的基本樣式結構:
~~~
if 條件1:
執行的內容1
elif 條件2:
執行的內容2
elif 條件3:
執行的內容3
else:
執行的內容4
~~~
執行的內容1、內容2,等,稱之為語句塊。elif用于多個條件時使用,可以沒有。另外,也可以只有if,而沒有else。
**提醒:**每個執行的內容,均以縮進四個空格方式。
例1:輸入一個數字,并輸出輸入的結果,如果這個數字大于10,那么同時輸出大于10,如果小于10,同時輸出提示小于10,如果等于10,就輸出表揚的一句話。
從這里開始,我們的代碼就要越來越接近于一個復雜的判斷過程了。為了讓我們的思維能夠更明確上述問題的解決流程,在程序開發過程中,常常要畫流程圖。什么是流程圖,我從另外一個角度講,就是要讓思維過程可視化,簡稱“思維可視化”。順便自吹自擂一下,我從2004年就開始在我朝推廣思維導圖,這就是一種思維可視化工具。自吹到此結束。看這個問題的流程圖:

理解了流程圖中的含義,就開始寫代碼,代碼實例如下:
~~~
#! /usr/bin/env python
#coding:utf-8
print "請輸入任意一個整數數字:"
number = int(raw_input()) #通過raw_input()輸入的數字是字符串
#用int()將該字符串轉化為整數
if number == 10:
print "您輸入的數字是:%d"%number
print "You are SMART."
elif number > 10:
print "您輸入的數字是:%d"%number
print "This number is more than 10."
elif number < 10:
print "您輸入的數字是:%d"%number
print "This number is less than 10."
else:
print "Are you a human?"
~~~
特別提醒看官注意,前面我們已經用過raw_input()函數了,這個是獲得用戶在界面上輸入的信息,而通過它得到的是字符串類型的數據。可以在IDLE中這樣檢驗一下:
~~~
>>> a=raw_input()
10
>>> a
'10'
>>> type(a)
<type 'str'>
>>> a=int(a)
>>> a
10
>>> type(a)
<type 'int'>
~~~
剛剛得到的那個a就是str類型,如果用int()轉換一下,就變成int類型了。
看來**int()可以將字str類型的數字轉換為int類型**,類似,是不是有這樣的結論呢:**str()可以將int類型的數字轉化為str類型**.建議看官實驗一下。
上述程序的后面,就是依據條件進行判斷,不同條件下做不同的事情了。需要提醒的是在條件中:number == 10,為了閱讀方便,在number和==之間有一個空格最好了,同理,后面也有一個。這里的10,是int類型,number也是int類型.
上面的程序不知道是不是搞懂了?如果沒有,可以通過QQ跟我聯系,我的QQ公布一下:26066913,或者登錄我的微博,通過微博跟我聯系,當然還可以發郵件啦。我看到您的問題,會答復的。在github上跟我互動,是我最歡迎的。
最后,給看官留一個練習題目:
課后練習:開發一個猜數字游戲的程序。即程序在某個范圍內指定一個數字,比如在0到9范圍內指定一個數字,用戶猜測程序所指定的數字大小。
請看官自己編寫。我們會在后面討論這個問題。
## 小知識
不知道各位是否注意到,上面的那段代碼,開始有一行:
~~~
#! /usr/bin/env python
~~~
這是什么意思呢?
這句話以#開頭,表示本來不在程序中運行。這句話的用途是告訴機器尋找到該設備上的python解釋器,操作系統使用它找到的解釋器來運行文件中的程序代碼。有的程序里寫的是/usr/bin python,表示python解釋器在/usr/bin里面。但是,如果寫成/usr/bin/env,則表示要通過系統搜索路徑尋找python解釋器。不同系統,可能解釋器的位置不同,所以這種方式能夠讓代碼更將擁有可移植性。對了,以上是對Unix系列操作系統而言。對與windows系統,這句話就當不存在。
- 第零部分 獨上高樓,望盡天涯路
- 嘮叨一些關于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