python控制流:條件語句、循環(huán)語句、zip、enumerate、列表推導(dǎo)

條件語句

示例

太簡(jiǎn)單了,上個(gè)實(shí)例

points = 174

if points <= 50:

? ? result = "Congratulations! You won a wooden rabbit!"

elif points <= 150:

????result = "Oh dear, no prize this time."

elif points <= 180:

????result = "Congratulations! You won a wafer-thin mint!"

else:

????result = "Congratulations! You won a penguin!"

print(result)

輸出:

Congratulations! You won a wafer-thin mint!

真假值

如果在if?語句中使用非布爾對(duì)象代替布爾表達(dá)式,Python 將檢查其真假值,判斷是否運(yùn)行if下的縮進(jìn)區(qū)域代碼。

以下是在 Python 中被視為 False 的大多數(shù)內(nèi)置對(duì)象:

定義為 false 的常量:None?和?False

任何數(shù)字類型的零:0、0.0、0j、Decimal(0)、Fraction(0, 1)

空序列和空集合:””、()、[]、{}、set()、range(0)

示例

errors =3

if errors:

?????print("You have {} errors to fix!".format(errors))

else:

?????print("No errors to fix!")

輸出:因?yàn)閑rrors不等0,所以為True,輸出第一種情況



循環(huán)語句

Python 有兩種類型的循環(huán):for?循環(huán)和?while?循環(huán)。for?循環(huán)用來遍歷可迭代對(duì)象。while循環(huán)判斷符合條件的情況下則進(jìn)行循環(huán),否則跳出循環(huán)。

for循環(huán)

示例:

cities = ['new york city','mountain view','chicago','los angeles']

for city in cities:? ?

????print(city.title())

For 循環(huán)的組成部分

循環(huán)的第一行以關(guān)鍵字?for?開始,表示這是一個(gè)?for?循環(huán)

然后cities為正在被遍歷的可迭代對(duì)象,并且用迭代變量表示當(dāng)前正在被處理的可迭代對(duì)象的元素。在此示例中,迭代變量?city?在第一次迭代時(shí)將是“new york city”,在第二次迭代時(shí)將是“mountain view。

for?循環(huán)頭部始終以英文冒號(hào)?:?結(jié)束。

for?循環(huán)頭部之后的是在此?for?循環(huán)的每次迭代時(shí)運(yùn)行的縮進(jìn)代碼塊。在此塊中,我們可以使用迭代變量訪問當(dāng)前正在被處理的元素的值。

range函數(shù)

for循環(huán)經(jīng)常配合range()進(jìn)行使用,它一個(gè)內(nèi)置函數(shù),用于創(chuàng)建不可變的數(shù)字序列。它有三個(gè)參數(shù),必須都為整數(shù)。

range(start=0, stop, step=1)

Start是該序列的第一個(gè)數(shù)字,stop比該序列的最后一個(gè)數(shù)字大 1,step是該序列中每個(gè)數(shù)字之間的差。如果未指定的話,start默認(rèn)為 0,step?默認(rèn)為 1(即上述?=0和?=1)。

range中的參數(shù)可以省略,省略的參數(shù)就是用默認(rèn)值,規(guī)則如下:

如果你在?range()?的括號(hào)里指定一個(gè)參數(shù),它將用作 'stop' 的值:

? ??E.g.?list(range(4))?返回?[0, 1, 2, 3]

如果你在?range()?的括號(hào)里指定兩個(gè)參數(shù),它們將用作 'start' 和 'stop' 的值:

?????E.g.list(range(2, 6))?返回?[2, 3, 4, 5]

或者你可以為三個(gè)參數(shù) 'start、stop' 和 'step' 均指定一個(gè)值。?

? ??E.g.?list(range(1, 10, 2))?返回?[1, 3, 5, 7, 9]

whil循環(huán)

For?循環(huán)是一種“有限迭代”,意思就是循環(huán)主體將運(yùn)行預(yù)定義的次數(shù)。這與“無限迭代”循環(huán)不同,無限迭代循環(huán)是指循環(huán)重復(fù)未知次數(shù),并在滿足某個(gè)條件時(shí)結(jié)束,while?循環(huán)正是這種情況。

示例

card_deck = [4, 11, 8, 5, 13, 2, 8, 10]

hand = []

#當(dāng)hand里的所有數(shù)值相加起來小于等于17,進(jìn)行循環(huán)

while sum(hand)? <=17:

#從card_deck取出最后一個(gè)數(shù),并從card_deck中刪除,隨后添加到hand

????hand.append(card_deck.pop())

While?循環(huán)的組成部分

第一行以關(guān)鍵字?while?開始,表示這是一個(gè)?while?循環(huán)。

然后是要檢查滿足循環(huán)的條件。在此示例中是?sum(hand) <= 17。

while?循環(huán)頭部始終以冒號(hào)?:?結(jié)束。

該頭部之后的縮進(jìn)部分是?while?循環(huán)的主體。如果?while?循環(huán)的條件為 true,該循環(huán)的主體將被執(zhí)行。每次運(yùn)行循環(huán)主體時(shí),條件將被重新評(píng)估。這個(gè)檢查條件然后運(yùn)行循環(huán)的流程將重復(fù),直到該表達(dá)式變成 false。



break、continue


有時(shí)候我們需要更精準(zhǔn)地控制何時(shí)循環(huán)應(yīng)該結(jié)束,或者跳過某個(gè)迭代。在這些情況下,我們使用關(guān)鍵字?break?和?continue,這兩個(gè)關(guān)鍵字可以用于?for?和?while?循環(huán)。

1.break?使循環(huán)終止

2.continue?跳過本次的循環(huán)迭代



Zip 和 Enumerate

Zip

zip?返回一個(gè)將多個(gè)可迭代對(duì)象組合成一個(gè)元組序列的迭代器。每個(gè)元組都包含所有可迭代對(duì)象中該位置的元素。例如,

list(zip(['a', 'b', 'c'], [1, 2, 3]))?

將輸出?[('a', 1), ('b', 2), ('c', 3)].

可以如下所示地用?for?循環(huán)拆封每個(gè)元組。

letters = ['a', 'b', 'c']

nums = [1, 2, 3]

for letter, numin zip(letters, nums):

????print("{}: {}".format(letter, num))

除了可以將兩個(gè)列表組合到一起之外,還可以使用星號(hào)拆封列表。

some_list = [('a',1), ('b',2), ('c',3)]

letters, nums = zip(*some_list)

Enumerate

enumerate?是一個(gè)會(huì)返回元組迭代器的內(nèi)置函數(shù),這些元組包含列表的索引和值。當(dāng)你需要在循環(huán)中獲取可迭代對(duì)象的每個(gè)元素及其索引時(shí)使用。

letters = ['a', 'b', 'c', 'd', 'e']

for i, letterin enumerate(letters):

????print(i, letter)

輸出:

0 a 、1 b、 2 c 、3 d 、4 e



列表推導(dǎo)式

在 Python 中,你可以使用列表推導(dǎo)式快速簡(jiǎn)練地創(chuàng)建列表。下面是之前的一個(gè)示例:

capitalized_cities = []

for cityin cities:

????capitalized_cities.append(city.title())

可以簡(jiǎn)寫為:capitalized_cities = [city.title() for city in cities]

列表推導(dǎo)式中的條件語句

你還可以向列表推導(dǎo)式添加條件語句。在可迭代對(duì)象之后,你可以使用關(guān)鍵字?if?檢查每次迭代中的條件。

squares = [x**2 for x in range(9) if x %2==0]

如果你要添加 else,則需要將條件語句移到列表推導(dǎo)式的開頭,直接放在表達(dá)式后面,如下所示。

squares = [x**2 if x %2==0 else x +3 for x in range(9)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 因?yàn)橐恍┰驍嗔艘惶?,故今天至少?.5小時(shí)才能補(bǔ)足嘍~ 列表list 常用方法 len()返回列表中的元素?cái)?shù)量。...
    誰共我醉明月閱讀 308評(píng)論 1 0
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,243評(píng)論 0 38
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,841評(píng)論 0 10
  • 【第一周:觀照周】 [太陽][太陽]我是滿滿:我是關(guān)愛、賦能的領(lǐng)袖!201804.18(1/30) 【必修】: 1...
    小荒原閱讀 139評(píng)論 0 1
  • 天氣 晴 今天吃到一種新水果,名叫黃皮果。 果然是黃色的皮,形狀有點(diǎn)像橄欖,味道酸酸甜甜,里面的籽是綠色的。果肉少...
    西風(fēng)東來閱讀 258評(píng)論 0 1

友情鏈接更多精彩內(nèi)容