4.1 遍歷整個(gè)列表
輸入:
# 4.1 遍歷整個(gè)列表
# for循環(huán)打印魔術(shù)師名單中的所有名字
magicians = ['alice','davide','caroina','duoduo','qianqian']
# 下面一行代碼讓python獲取列表magicians中的第一個(gè)值('alice'),并將其存儲(chǔ)到變量magician中。 接下來python讀取代碼print(magician),接著循環(huán)到開始
for magicianin magicians:
print(magician)
# 4.1.1 深入的研究循環(huán)“讓計(jì)算機(jī)完成重復(fù)工作”
cats? = ['a','b','c']
dogs = ['d','e','f']
items = ['g','h','i']
for catin cats:
??? for dogin dogs:
??????? for itemin items:
????????????? print(cat)
??????????? ? print(dog)
????????????? print(item)
# 4.1.2 在for循環(huán)中執(zhí)行更多的操作
# 在for循環(huán)中對(duì)每個(gè)元素執(zhí)行任何操作
magicians = ['alice','davide','carolina']
for magicianin magicians:
?????? print(magician.title() +",that was a great trick!")
# 4.1.3 在for循環(huán)結(jié)束后執(zhí)行一操作
magicians = ['alice','davide','carolina']
for magicianin magicians:
?????? print(magician.title() +",that was a great trick!")
?????? print("I can't wait to see your next trick, " + magician.title() )
??????? print("Thank you,everyone. Thant was a great magic show!" +"\n")
# PS最后一個(gè)print沒有縮行
magicians = ['alice','davide','carolina']
for magicianin magicians:
????? print(magician.title() +",that was a great trick!")
????? print("I can't wait to see your next trick, " + magician.title() +"\n")
print("Thank you,everyone. Thant was a great magic show!")
PS:使用for循環(huán)處理數(shù)據(jù)是一種對(duì)數(shù)據(jù)集執(zhí)行整體操作的不錯(cuò)的方式。例如,你可以使用for循環(huán)初始化游戲——遍歷角色列表,將每個(gè)角色顯示在屏幕上面。再在循環(huán)后面添加一個(gè)不縮進(jìn)的代碼塊,在屏幕上繪制所有角色后顯示一個(gè)Play Now按鈕。
輸出:
# 4.1 遍歷整個(gè)列表
# for循環(huán)打印魔術(shù)師名單中的所有名字
alice
davide
caroina
duoduo
qianqian
# 4.1.1 深入的研究循環(huán)“讓計(jì)算機(jī)完成重復(fù)工作”
a
d
g
a
d
h
a
d
i
a
e
g
a
e
h
a
e
i
a
f
g
a
f
h
a
f
i
b
d
g
b
d
h
b
d
i
b
e
g
b
e
h
b
e
i
......
# 4.1.2 在for循環(huán)中執(zhí)行更多的操作
# 在for循環(huán)中對(duì)每個(gè)元素執(zhí)行任何操作
Alice,that was a great trick!
Davide,that was a great trick!
Carolina,that was a great trick!
# 4.1.3 在for循環(huán)結(jié)束后執(zhí)行一操作
Alice,that was a great trick!
I can't wait to see your next trick, Alice
Thank you,everyone. Thant was a great magic show!
Davide,that was a great trick!
I can't wait to see your next trick, Davide
Thank you,everyone. Thant was a great magic show!
Carolina,that was a great trick!
I can't wait to see your next trick, Carolina
Thank you,everyone. Thant was a great magic show!
# PS最后一個(gè)print沒有縮行
Alice,that was a great trick!I can't wait to see your next trick, Alice
Davide,that was a great trick!
I can't wait to see your next trick, Davide
Carolina,that was a great trick!
I can't wait to see your next trick, Carolina
Thank you,everyone. Thant was a great magic show!
?4.2 避免縮進(jìn)錯(cuò)誤
代碼縮進(jìn)讓代碼整潔而結(jié)構(gòu)清晰,在python程序中,你將看到縮進(jìn)成度個(gè)不相同的代碼塊,使我們對(duì)代碼組織結(jié)構(gòu)進(jìn)行認(rèn)識(shí)。
輸入:
# 4.2 避免縮進(jìn)錯(cuò)誤“python根據(jù)縮進(jìn)來判斷代碼與前一個(gè)代碼行的關(guān)系”
# 4.2.1 忘記縮進(jìn)

# 4.2.2 忘記縮進(jìn)額外的代碼行
# 有時(shí)候循環(huán)正常運(yùn)行并不會(huì)報(bào)錯(cuò),結(jié)果卻是去恰恰相反
magicians = ['alice','davide','carolina']
for magicianin magicians:
print(magician.title() +",that was a great trick!")
print("I cant't waite to see your next trick, " + magician.title() +".\n")
PS:這是一個(gè)邏輯錯(cuò)誤,從語法看這些python代碼合法,但是存在邏輯錯(cuò)誤,不符合預(yù)期。
# 4.2.3 不必要的縮進(jìn)
不小心縮進(jìn)了無須縮進(jìn)的代碼回報(bào)錯(cuò),如圖一所示。
#4.2.4 循環(huán)后不必要的縮進(jìn)
不小心縮進(jìn)了應(yīng)在循環(huán)結(jié)束后執(zhí)行的代碼,這些代碼將針對(duì)每個(gè)列表元素重復(fù)執(zhí)行??赡軙?huì)導(dǎo)致語法錯(cuò)誤,但大多數(shù)會(huì)造成邏輯錯(cuò)誤。不符合預(yù)期。
# 4.2.5 遺漏了冒號(hào)

輸出:
# 4.2 避免縮進(jìn)錯(cuò)誤“python根據(jù)縮進(jìn)來判斷代碼與前一個(gè)代碼行的關(guān)系”
# 4.2.1 忘記縮進(jìn)
# 4.2.2 忘記縮進(jìn)額外的代碼行
Alice,that was a great trick!
Davide,that was a great trick!
Carolina,that was a great trick!
I cant't waite to see your next trick, Carolina.
PS:這是一個(gè)邏輯錯(cuò)誤,從語法看這些python代碼合法,但是存在邏輯錯(cuò)誤,不符合預(yù)期。
# 4.2.3 不必要的縮進(jìn)
不小心縮進(jìn)了無須縮進(jìn)的代碼回報(bào)錯(cuò),如圖一所示。
#4.2.4 循環(huán)后不必要的縮進(jìn)
不小心縮進(jìn)了應(yīng)在循環(huán)結(jié)束后執(zhí)行的代碼,這些代碼將針對(duì)每個(gè)列表元素重復(fù)執(zhí)行??赡軙?huì)導(dǎo)致語法錯(cuò)誤,但大多數(shù)會(huì)造成邏輯錯(cuò)誤。不符合預(yù)期。
# 4.2.5 遺漏了冒號(hào),如圖2所示
4.3 創(chuàng)建數(shù)字列表
輸入:
# 4.3.1 使用函數(shù)range(),生成一系列數(shù)字。
# 從1開始到4結(jié)束
for valuein range(1,5):
print(value)
# 4.3.2 使用range創(chuàng)建數(shù)字列表# 創(chuàng)建數(shù)字列表使用函數(shù)list()將range()的結(jié)果直接轉(zhuǎn)換為列表。如果將range()作為list()參數(shù),輸出將為一個(gè)數(shù)字列表。
number = list(range(1,6))
print(number)
# 使用函數(shù)range(),指定步長(zhǎng)。例如:打印1-10內(nèi)偶數(shù)# 從2開始數(shù),不斷的+2,直到達(dá)到或者超過終值(11),因此輸出如下:
even_number = list(range(2,11,2))
print(even_number)
# 創(chuàng)建一個(gè)包含前10個(gè)整數(shù)(即1-10)的平方,(**)表示乘方運(yùn)算。
squars = []for value in range(1,11):
squar = value ** 2
#立即將結(jié)果附加到列表squares
squars.append(squar)
print(squars)
# 4.3.3 對(duì)數(shù)字列表執(zhí)行簡(jiǎn)單的統(tǒng)計(jì)計(jì)算
# 找出數(shù)字列表的最大值,最小值和總和
digits =? [1,2,3,4,5,6,7,8,9,0]
print(min(digits))
print(max(digits))
print(sum(digits))
# 4.3.4 列表解析[化繁為簡(jiǎn)]同上1-10的乘方
squares = [value**2 for valuein range(1,11)]
print(squares)
輸出:
# 4.3.1 使用函數(shù)range(),生成一系列數(shù)字。
# 從1開始到4結(jié)束
1
2
3
4
# 4.3.2 使用range創(chuàng)建數(shù)字列表# 創(chuàng)建數(shù)字列表使用函數(shù)list()將range()的結(jié)果直接轉(zhuǎn)換為列表。如果將range()作為list()參數(shù),輸出將為一個(gè)數(shù)字列表。
[1, 2, 3, 4, 5]
# 使用函數(shù)range(),指定步長(zhǎng)。例如:打印1-10內(nèi)偶數(shù)# 從2開始數(shù),不斷的+2,直到達(dá)到或者超過終值(11),因此輸出如下:
[2, 4, 6, 8, 10]
# 創(chuàng)建一個(gè)包含前10個(gè)整數(shù)(即1-10)的平方,(**)表示乘方運(yùn)算。
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 4.3.3 對(duì)數(shù)字列表執(zhí)行簡(jiǎn)單的統(tǒng)計(jì)計(jì)算
# 找出數(shù)字列表的最大值,最小值和總和
0
9
45
# 4.3.4 列表解析[化繁為簡(jiǎn)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4.4 使用列表的一部分
輸入:

# 4.4 使用列表的一部分
# 處理的列表部分元素——稱之為pytho中的切片
創(chuàng)建切片,可指定要使用的第一個(gè)元素的索引和最后一個(gè)元素的索引+1
# 4.4.1 切片
players = ['charles','martina','michael','florence','eli']
print(players[0:3])
# 提取2-4個(gè)元素,可將起始索引指定為1 ,并將種植索引指定為4:
players = ['charles','martina','michael','florence','eli']
print(players[1:4])
#由于沒有指定起始索引,python從列表開頭開始提取。
print(players[:4])
#從列表第4或者2個(gè)元素到列表末尾的所有元素。
print(players[4:])
print(players[2:])
#名單最后3名隊(duì)員
print(players[-3:])
# 4.4.2 遍歷切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
# 遍歷列表的部分元素,可在for循環(huán)中使用切片。在下面的示例中,遍歷前3名隊(duì)員,并打印他們的名字。
print("Here are the first three players on my team:")
for playerin players[:3]:
print(player.title())
# 4.4.3 復(fù)制列表
# 根據(jù)既有列表創(chuàng)建全新的列表。要復(fù)制整個(gè)列表,可創(chuàng)建一個(gè)包含的整個(gè)列表的切片,方法:同時(shí)省略起始索引+終止索引([:])
# 這讓python創(chuàng)建一個(gè)始于第一個(gè)元素終止于最后一個(gè)元素的切片,即復(fù)制整個(gè)列表。
my_foods = ['pizzy','apple','bananas']
friend_foods = my_foods[:]
# 此行代碼是行不通的——friend_foods = my_foods,這樣我們?cè)趦蓚€(gè)列表各添加不同食物,2會(huì)種食物分別出現(xiàn)都出現(xiàn)在兩個(gè)列表,并不是我們想要的結(jié)果。
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
輸出:
# 4.4.1 切片
['charles', 'martina', 'michael']
# 提取2-4個(gè)元素,可將起始索引指定為1 ,并將種植索引指定為4:
['martina', 'michael', 'florence']
['charles', 'martina', 'michael', 'florence']
#從列表第4或者2個(gè)元素到列表末尾的所有元素。
['eli']
['michael', 'florence', 'eli']
#名單最后3名隊(duì)員
['michael', 'florence', 'eli']
# 4.4.2 遍歷切片
# 遍歷列表的部分元素,可在for循環(huán)中使用切片。在下面的示例中,遍歷前3名隊(duì)員,并打印他們的名字。
Here are the first three players on my team:
Charles
Martina
Michael
# 4.4.3 復(fù)制列表
# 根據(jù)既有列表創(chuàng)建全新的列表。要復(fù)制整個(gè)列表,可創(chuàng)建一個(gè)包含的整個(gè)列表的切片,方法:同時(shí)省略起始索引+終止索引([:])
# 這讓python創(chuàng)建一個(gè)始于第一個(gè)元素終止于最后一個(gè)元素的切片,即復(fù)制整個(gè)列表。
My favorite foods are:
['pizzy', 'apple', 'bananas', 'cannoli']
My friend's favorite foods are:
['pizzy', 'apple', 'bananas', 'ice cream']
4.5元祖
列表適合用于存儲(chǔ)在程序運(yùn)行期間可能變化的數(shù)據(jù)集。列表是可以修改的,對(duì)處理網(wǎng)站的用戶列表或者游戲中的角色列表至關(guān)重要。那么,需要?jiǎng)?chuàng)建一系列不可修改的元素,元祖可以滿足這種需求。Python將這種不可修改的值稱為:不可變的,而不可變的列表被稱為:元組。
輸入:
# 4.5.1 定義元組
dimension = (200,50)
print(dimension[0])
print(dimension[1])
# 我們首先定義了元組dimension,為此我們使用了圓括號(hào)而非方括號(hào)。
# 接下來,我們分別打印該元組的各個(gè)元素,使用的語法與訪問列表元素時(shí)使用的語法相同。
# 接下來嘗試修改元組dimension中的一個(gè)元素,看看結(jié)果。
dimension = (200,50)
dimension[0] =250
# 試圖修改第一個(gè)元素的值,python試圖阻止,返回python類型錯(cuò)誤信息。
# 修改元組的操作被禁止,因此Python指出不能給元組的元素賦值:
# 由于試圖修改元祖的操作被禁止,因此python指出不能給元組的元素賦值

# 4.5.2 遍歷元組中的所有值
dimensions = (200,50)
for dimensionin dimensions:
print(dimension)
# 修改元組變量
# 雖然不能修改元組的元素,打呢可以給存儲(chǔ)元組的變量賦值。因此如果要修改前述矩形的尺寸,可重新定義整個(gè)元組。
dimension = (200,50)
print("Original dimensions:")
for dimensionin dimensions:
print(dimension)
dimensions = (400,100)
print("\nModified dimensions:")
for dimensionin dimensions:
print(dimension)
# 將新元組存儲(chǔ)到變量dimensions中,然后打印新尺寸,python不會(huì)報(bào)任何錯(cuò)誤,因?yàn)樵M變量賦值時(shí)合法的。
# 相比列表,元祖是簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)。如國(guó)需要存儲(chǔ)的一組值在程序的整個(gè)生命周期內(nèi)都不變,可使用元組。
輸出:
# 4.5.1 定義元組
200
50
# 4.5.2 遍歷元組中的所有值
200
50
Original dimensions:
200
50
Modified dimensions:
400
100
4.6 設(shè)置代碼格式
4.6.1 格式設(shè)置指南
4.6.2 縮進(jìn)
4.6.3 行長(zhǎng)(每行<=80字符)有些小組將最大行長(zhǎng)社設(shè)置為99行
4.6.4 空行
將程序不同部分分開,可使用空行。
4.6.5 其他格式設(shè)置指南
參考人民郵電出版社《Python 編程從入門到實(shí)踐》【美】Eric Matthes 著 袁國(guó)忠 譯
歡迎吐槽!?。?/p>