switch語句縮排 Python 流程控制語句

2021-10-12 09:02:01 字數 3903 閱讀 6493

1. if 語句

也許最有名的是 if 語句。例如:

>>> x = int(input("please enter an integer: "))

please enter an integer: 42

>>> if x < 0:

... x = 0

... print('negative changed to zero')

... elif x == 0:

... print('zero')

... elif x == 1:

... print('single')

... else:

... print('more')

more

可能會有零到多個 elif 部分,else 是可選的。關鍵字 『elif』 是 』else if』 的縮寫,這個可以有效地避免過深的縮排。if … elif … elif … 序列用於替代其它語言中的 switch 或 case 語句。

2. for 語句

python 中的 for 語句和 c 或 pascal 中的略有不同。通常的迴圈可能會依據乙個等差數值步進過程(如 pascal),或由使用者來定義迭代步驟和中止條件(如 c ),python 的 for 語句依據任意序列(鍊錶或字串)中的子項,按它們在序列中的順序來進行迭代。例如(沒有暗指):

在迭代過程中修改迭代序列不安全(只有在使用鍊錶這樣的可變序列時才會有這樣的情況)。如果你想要修改你迭代的序列(例如,複製選擇項),你可以迭代它的複本。使用切割標識就可以很方便的做到這一點:

>>> for w in words[:]: # loop over a slice copy of the entire list.

... if len(w) > 6:

... words.insert(0, w)

>>> words

['defenestrate', 'cat', 'window', 'defenestrate']

3. range() 函式

如果你需要乙個數值串行,內建函式 range() 會很方便,它生成乙個等差級數鍊錶:

>>> for i in range(5):

... print(i)

range(10) 生成了乙個包含 10 個值的鍊錶,它用鍊錶的索引值填充了這個長度為 10 的列表,所生成的鍊錶中不包括範圍中的結束值。也可以讓 range() 操作從另乙個數值開始,或者可以指定乙個不同的步進值(甚至是負數,有時這也被稱為 「步長」):

range(5, 10)

5 through 9

range(0, 10, 3)

0, 3, 6, 9

range(-10, -100, -30)

-10, -40, -70

需要迭代鍊錶索引的話,如下所示結合使 用 range() 和 len()

>>> a = ['mary', 'had', 'a', 'little', 'lamb']

>>> for i in range(len(a)):

... print(i, a[i])

0 mary

1 had

2 a3 little

4 lamb

不過,這種場合可以方便的使用 enumerate(),請參見 迴圈技巧。

如果你只是列印乙個序列的話會發生奇怪的事情:

>>> print(range(10))

range(0, 10)

在不同方面 range() 函式返回的物件表現為它是乙個列表,但事實上它並不是。當你迭代它時,它是乙個能夠像期望的序列返回連續項的物件;但為了節省空間,它並不真正構造列表。

我們稱此類物件是 可迭代的,即適合作為那些期望從某些東西中獲得連續項直到結束的函式或結構的乙個目標(引數)。我們已經見過的 for 語句就是這樣乙個迭代器。list() 函式是另外乙個( 迭代器 ),它從可迭代(物件)中建立列表:

>>> list(range(5))

[0, 1, 2, 3, 4]

稍後我們會看到更多返回可迭代(物件)和以可迭代(物件)作為引數的函式。

4. break 和 continue 語句, 以及迴圈中的 else 子句

break 語句和 c 中的類似,用於跳出最近的一級 for 或 while 迴圈。

迴圈可以有乙個 else 子句;它在迴圈迭代完整個列表(對於 for )或執行條件為 false (對於 while )時執行,但迴圈被 break 中止的情況下不會執行。以下搜尋素數的示例程式演示了這個子句:

>>> for n in range(2, 10):

... for x in range(2, n):

... if n % x == 0:

... print(n, 'equals', x, '*', n//x)

... break

... else:

... # loop fell through without finding a factor

... print(n, 'is a prime number')

2 is a prime number

3 is a prime number

4 equals 2 * 2

5 is a prime number

6 equals 2 * 3

7 is a prime number

8 equals 2 * 4

9 equals 3 * 3

(yes, 這是正確的**。看仔細:else 語句是屬於 for 迴圈之中, 不是 if 語句。)

與迴圈一起使用時,else 子句與 try 語句的 else 子句比與 if 語句的具有更多的共同點:try 語句的 else 子句在未出現異常時執行,迴圈的 else 子句在未出現 break 時執行。更多關於 try 語句和異常的內容,請參見 異常處理。

>>> for num in range(2, 10):

... if num % 2 == 0:

... print("found an even number", num)

... continue

... print("found a number", num)

found an even number 2

found a number 3

found an even number 4

found a number 5

found an even number 6

found a number 7

found an even number 8

found a number 9

4.5. pass 語句

pass 語句什麼也不做。它用於那些語法上必須要有什麼語句,但程式什麼也不做的場合,例如:

>>> while true:

... pass # busy-wait for keyboard interrupt (ctrl+c)

這通常用於建立最小結構的類:

>>> class myemptyclass:

... pass

另一方面,pass 可以在建立新**時用來做函式或控制體的佔位符。可以讓你在更抽象的級別上思考。pass 可以默默的被忽視:

>>> def initlog(*args):

... pass # remember to implement this!

語句 switch語句

switch語句的特點如下 1 switch x 被選擇的內容 即x 只能是byte,short,int,char這四種型別 2 備選答案並沒有指定的順序,但是執行肯定是從第乙個case開始的,如果其中有匹配的case,執行完,通過該case的break就結束了switch。如果沒有匹配的case,...

if語句和switch語句

利用if else構建分支結構if 表示式 語句1 else else部分是可選的 語句2 當表示式為真的時候,執行語句1,當表示式為假的時候,並且有else語句就執行語句2。if語句巢狀的時候,每乙個else要與最近的且沒有else語句的if進行匹配。例 if i 0 if a b else 例 ...

C 語句 switch語句

switch 語句選擇乙個要執行的語句列表,此列表具有乙個相關聯的 switch 標籤,它對應於 switch 表示式的值.switch statement switch expression switch block switch block switch block 一組switch secti...