關係運算子
if 語句
實際應用中的程式,大多不是一撮而就的,而是根據條件不同存在很多分支。
最基本的條件分支結構是if...else...語句即如果。。。否則。。。
在python當中,if condition1:(注意最後的冒號:)稱為“語句頭”。冒號:之後另起一行縮排的是“語句體”,語句體的行數不限,但至少有一行,否則需要用pass填充(即什麼也不做)。
縮排是Python複合語句的關鍵,初學者經常因縮排不當而導致報錯。關於縮排的習慣可以分為兩個派別:Tab黨,和Space黨,即用Tab鍵或空格鍵來控制縮排。(我本人常年堅持使用Tab)
if之後必須是一個布林表示式(如 condition1),當它為 True 時,執行其對應的語句體(branch1),否則向下跳轉到後一個語句頭(elif)。如果所有的 if 都沒有被滿足,則執行最後一個 else對應的語句體。
每個if分支所屬的程式體都需要縮排,否則會產生語法錯誤,這與C/C++/Java等使用大括號 {} 的語言不同。
其實我個人認為,使用大括號的程式碼可讀性更高,而且不容易在傳播過程中失真。
下面寫一個小程式判斷一個數是奇數還是偶數
迴圈
Python只支援兩種迴圈:for 迴圈和 while 迴圈。
在語法結構上和 if/else 有些接近,比如語句頭需要加冒號(:),語句體需要縮排。
for 迴圈
在上一課中,我們介紹過對字串的in和not in運算子:in運算子並非字串的專利,很多資料型別都具備這樣的性質,可以作為“迭代器”。
迭代器
組成 for 迴圈的一個關鍵部分就是迭代器。最常用的迭代器其實是列表(list)。字典(dictionary)也可以作為迭代器,迭代物件就是鍵(key)。
這些可以作為迭代器的資料容器,在之後的幾節會詳細介紹他們的屬性,下面先來看一個簡單的小例子:
迭代器共有4個元素,分別是4個漢字。for迴圈迭代了四次,每次取一個字,並執行print()函式。
range()函式
range()函式可以生成特定形式的數值迭代數列,經常配合 for 迴圈使用。range()讀取三個引數,分別對應三種情況:
-
range(a):一個引數,這個引數就是數列的上限(開區間,不包含這個數本身),下限預設為0。
-
range(a, b):兩個引數分別指定了上下限。下限(a)是閉區間,也包含在其中;而上限(b)則是開區間,不參與計算。
-
range(a, b, c):三個引數。第三個引數叫步長,前兩個例子沒有第三個引數,因此都是以預設值 1 為步長。本例中我們人為指定了步長。輸出了 10 以內的偶數。值得再次提醒的是,這裡的“10以內”不包括10。注意,如果 range(a, b) 的引數 a>b,那麼返回的將是一個空陣列。
-
如果步長為負數,會返回什麼樣的結果呢?
-
看下圖
while 迴圈
while 迴圈會持續反覆執行迴圈內語句,直到condition == False。
每次執行語句之後,都會重新檢查條件是否為真,如果為假則跳出迴圈。
下面出一個程式設計小練習:
找出 100 以內三的倍數,放入列表 numbers 中。
numbers = []
列表新增元素地方法是:numbers.append()
>>>> 程式設計區 <<<<
>>>> 程式設計區 <<<<
下篇文章我們公佈答案。