溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python的流程控制是什么

發(fā)布時間:2020-09-24 13:43:35 來源:億速云 閱讀:140 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關(guān)Python的流程控制是什么,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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')
...

這邊可以有 0 個或者多個 elif 部分,并且 else 部分是可選的。關(guān)鍵字 elif 是 'else if' 的縮寫,它有助于避免過度縮進(jìn)。 一個 if... elif ... elif ... 序列可以替代其他語言中的 switch 或 case 語句。

for 語句

Python 中 for 語句有點不同于 C 和 Pascal 中的 for 語句。Python 的 for 語句按照項目在序列中出現(xiàn)的順序迭代任何序列(列表或字符串),而不是總是迭代數(shù)學(xué)的算術(shù)級數(shù)(如 Pascal 中),或者讓用戶能夠定義迭代步驟和停止條件(如 C),例如(沒有雙關(guān)語):

>>> # 測量字符串:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print(w, len(w))
...
cat 3
window 6
defenestrate 12

如果你需要修改序列在循環(huán)內(nèi)的迭代(例如復(fù)制所選項目),建議你先復(fù)制。迭代序列操作并不會隱式地復(fù)制。切片方法使這一操作特別方便:

>>> for w in words[:]:  # 循環(huán)遍歷整個列表的切片副本。
...     if len(w) > 6:
...         words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']

使用 for w in words:,該示例將嘗試創(chuàng)建一個無窮列表,反復(fù)的插入 defenestrate 。

 range() 函數(shù)

如果你需要迭代一系列的數(shù)字,內(nèi)建的函數(shù) range() 會非常有用。如,生成等差數(shù)列:

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

給定的停止位是不會出現(xiàn)在生成的序列中的; range(10) 生成 10 個值,是長度為 10 的序列的項的合法指數(shù)??梢宰寘^(qū)間開始于其他的數(shù)字,或者指定不同的增量(甚至是負(fù)數(shù);有時候這被叫做 ‘步長’):

range(5, 10)
   5, 6, 7, 8, 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 a
3 little
4 lamb

然而,在大多數(shù)情況下,使用 enumerate() 函數(shù)更方便,可以看 循環(huán)技術(shù).

如果你直接打印一個區(qū)間的話,會發(fā)生奇怪的事情:

>>> print(range(10))
range(0, 10)

在很多方面, range() 返回的對象的行為像列表,但實際上它不是。它是一個對象,當(dāng)你迭代它的時候,會連續(xù)的返回整個序列的項目,但不會真的創(chuàng)建列表,從而節(jié)省空間。

我們稱這樣的對象為 可迭代的 ,也就是說,它很適合于當(dāng)作函數(shù)或者構(gòu)造函數(shù)的目標(biāo),它們期望從這里可以獲得連續(xù)的項目直到耗盡。我們已經(jīng)看到 for 語句是一個 迭代器 。list() 函數(shù)是另一個;它可從可迭代對象中創(chuàng)建列表:

>>> list(range(5))
[0, 1, 2, 3, 4]

break 和 continue 語句,以及循環(huán)上的 else 子句

break 語句,類似于 C ,會打破 for 或 while 循環(huán)的最內(nèi)層。

循環(huán)語句可能有 else 子句;它會在列表耗盡(用  for )從而終止循環(huán)或者條件為假(用  while )的時候被執(zhí)行,而不是循環(huán)被 break 語句終止的時候;這被下面的這個查找素數(shù)的循環(huán)例證了:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # 沒有找到一個因數(shù)導(dǎo)致的循環(huán)失敗
...         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

(是的,這是正確的代碼。密切關(guān)注: for 循環(huán)的 else 子句,不是 if 語句。)

當(dāng)在循環(huán)使中使用 else 子句時,與其說很類似于 if 語句,不如說更類似于 try 語句中的 else 子句:一個 try 語句的 else 子句會在沒有異常發(fā)生的時候執(zhí)行,而一個循環(huán)的 else 子句會在沒有 break 發(fā)生的時候執(zhí)行。要了解更多 try 語句和異常,請看 異常處理.

continue 語句,也是從 C 借來的,用于繼續(xù)循環(huán)的下一次迭代:

>>> 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

 pass 語句

pass 語句什么也不做。它可以用于語法上需要,但程序不需要做什么的時候。例如:

>>> while True:
...     pass  # 等待鍵盤中斷(Ctrl+C)
...

通常也用于創(chuàng)建小類的時候:

>>> class MyEmptyClass:
...     pass
...

以上就是Python的流程控制是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI