日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python之禅星号_Python基础1

發(fā)布時(shí)間:2023/12/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python之禅星号_Python基础1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹Python基礎(chǔ),包括變量和簡(jiǎn)單數(shù)據(jù)類型、列表基礎(chǔ)、操作列表、if語(yǔ)句、字典、輸入函數(shù)和while循環(huán)

在文件名和文件夾名中,最好使用小寫字母,并使用下劃線來(lái)表示空格,因?yàn)檫@是Python采用的命名約定

如果輸出的時(shí)間太長(zhǎng),按Ctrl + C停止輸出,或關(guān)閉輸出窗口

每當(dāng)要運(yùn)行Python代碼片段時(shí),都請(qǐng)打開一個(gè)命令窗口并啟動(dòng)Python終端會(huì)話。要關(guān)閉該終端會(huì)話,可按Ctrl + Z,再按回車鍵,也可執(zhí)行命令exit() 。

python.org:瀏覽Python主頁(yè)(http://python.org/),尋找你感興趣的主題。你對(duì)Python越熟悉,這個(gè)網(wǎng)站對(duì)你來(lái)說(shuō)就越有用。

每個(gè)變量都存儲(chǔ)了一個(gè)值——與變量相關(guān)聯(lián)的信息。在程序中可隨時(shí)修改變量的值,而Python將始終記錄變量的最新值。

程序存在錯(cuò)誤時(shí),Python解釋器將竭盡所能地幫助你找出問題所在。程序無(wú)法成功地運(yùn)行時(shí),解釋器會(huì)提供一個(gè)traceback。traceback是一條記錄,指出了解釋器嘗試運(yùn)行代碼時(shí),在什么地方陷入了困境。

名稱錯(cuò)誤通常意味著兩種情況:要么是使用變量前忘記了給它賦值,要么是輸入變量名時(shí)拼寫不正確。

方法是Python可對(duì)數(shù)據(jù)執(zhí)行的操作。在name.title()中,name后面的句點(diǎn)(.)讓Python對(duì)變量name執(zhí)行方法title()指定的操作。每個(gè)方法后面都跟著一對(duì)括號(hào),這是因?yàn)榉椒ㄍǔP枰~外的信息來(lái)完成其工作。這種信息是在括號(hào)內(nèi)提供的。函數(shù)title()不需要額外的信息,因此它后面的括號(hào)是空的。title()以首字母大寫的方式顯示每個(gè)單詞,即將每個(gè)單詞的首字母都改為大寫。

要將字符串改為全部大寫或全部小寫的處理方法:upper()、lower()。存儲(chǔ)數(shù)據(jù)時(shí),方法lower()很有用。很多時(shí)候,你無(wú)法依靠用戶來(lái)提供正確的大小寫,因此需要將字符串先轉(zhuǎn)換為小寫,再存儲(chǔ)它們。以后需要顯示這些信息時(shí),再將其轉(zhuǎn)換為最合適的大小寫方式。

使用加號(hào)(+)來(lái)合并字符串。這種合并字符串的方法稱為 拼接 。通過拼接,可使用存儲(chǔ)在變量中的信息來(lái)創(chuàng)建完整的消息。

要在字符串中添加制表符,可使用字符組合\t,eg:print("\tPython")

要在字符串中添加換行符,可使用字符組合\n,eg:print("C\nJavaScript\n")

Python能夠找出字符串開頭和末尾多余的空白。要確保字符串末尾沒有空白,可使用方法rstrip()。然而,這種刪除只是暫時(shí)的,接下來(lái)再次詢問 該變量的值時(shí),你會(huì)發(fā)現(xiàn)這個(gè)字符串與輸入時(shí)一樣,依然包含多余的空白。要永久刪除這個(gè)字符串中的空白,必須將刪除操作的結(jié)果存回到變量中。你還可以剔除字符串開頭的空白,或同時(shí)剔除字符串兩端的空白。為此,可分別使用方法lstrip()和strip():

使用兩個(gè)乘號(hào)表示乘方運(yùn)算,空格不影響Python計(jì)算表達(dá)式的方式,它們的存在旨在讓你閱讀代碼時(shí),能迅速確定先執(zhí)行哪些運(yùn)算。Python將帶小數(shù)點(diǎn)的數(shù)字都稱為浮點(diǎn)數(shù)。

但需要注意的是,結(jié)果包含的小數(shù)位數(shù)可能是不確定的:所有語(yǔ)言都存在這種問題,沒有什么可擔(dān)心的。Python會(huì)盡力找到一種方式,以盡可能精確地表示結(jié)果,但鑒于計(jì)算機(jī)內(nèi)部表示數(shù)字的方式,這在有些情況下很難。就現(xiàn)在而言,

暫時(shí)忽略多余的小數(shù)位數(shù)即可。eg:>>> 0.2 + 0.1??? 0.30000000000000004

調(diào)用函數(shù)str(),Python將非字符串值表示為字符串:

Python社區(qū)的理念都包含在Tim Peters撰寫的“Python之禪”中。要獲悉這些有關(guān)編寫優(yōu)秀Python代碼的指導(dǎo)原則,只需在解釋器中執(zhí)行命令import this。

列表

列表由一系列按特定順序排列的元素組成。在Python中,用方括號(hào)([])來(lái)表示列表,并用逗號(hào)來(lái)分隔其中的元素。列表是有序集合,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴Python即可。要訪問列表元素,可指出列表的名稱,再指出元素的索引,并將其放在方括號(hào)內(nèi)。在Python中,第一個(gè)列表元素的索引為0,而不是1。Python為訪問最后一個(gè)列表元素提供了一種特殊語(yǔ)法。通過將索引指定為-1,可讓Python返回最后一個(gè)列表元素。

你創(chuàng)建的大多數(shù)列表都將是動(dòng)態(tài)的,這意味著列表創(chuàng)建后,將隨著程序的運(yùn)行增刪元素。要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。

方法append()將元素添加到了列表末尾,而不影響列表中的其他所有元素:eg: motorcycles.append('ducati')

方法insert()可在列表的任何位置添加新元素。需要指定新元素的索引和值。這種操作將列表中既有的每個(gè)元素都右移一個(gè)位置:eg: motorcycles.insert(0, 'ducati')

可以根據(jù)位置或值來(lái)刪除列表中的元素。如果知道要?jiǎng)h除的元素在列表中的位置,可使用del語(yǔ)句。eg:del motorcycles[0]使用del語(yǔ)句將值從列表中刪除后,你就無(wú)法再訪問它了。

方法pop()可刪除列表末尾的元素,并讓你能夠接著使用它。術(shù)語(yǔ)彈出(pop)源自這樣的類比:列表就像一個(gè)棧,而刪除列表末尾的元素相當(dāng)于彈出棧頂元素。eg: popped_motorcycle = motorcycles.pop()實(shí)際上也可以使用pop()來(lái)刪除列表中任何位置的元素,只需在括號(hào)中指定要?jiǎng)h除的元素的索引即可。eg: first_owned = motorcycles.pop(0)每當(dāng)使用pop()時(shí),被彈出的元素就不再在原列表中了。

根據(jù)值刪除元素,可使用方法remove(),在括號(hào)中寫入要?jiǎng)h除的值。方法remove()只刪除第一個(gè)指定的值。如果要?jiǎng)h除的值可能在列表中出現(xiàn)多次,就需要使用循環(huán)來(lái)判斷是否刪除了所有這樣的值。要?jiǎng)h除的值可以存儲(chǔ)在其他變量中,并被其他變量使用。

方法sort()永久性地修改了列表元素的排列順序。按與字母順序相反的順序排列列表元素,只需向sort()方法傳遞參數(shù)reverse=True。eg: cars.sort(reverse=True)

函數(shù)sorted()能夠按特定順序顯示列表元素,同時(shí)不影響它們?cè)诹斜碇械脑寂帕许樞颉g: sorted(cars)調(diào)用函數(shù)sorted()后,列表元素的排列順序并沒有變。如果要按與字母順序相反的順序顯示列表,也可向函數(shù)sorted()傳遞參數(shù)reverse=True。

要反轉(zhuǎn)列表元素的排列順序,可使用方法reverse()。reverse()不是指按與字母順序相反的順序排列列表元素,而只是反轉(zhuǎn)列表元素的排列順序:eg: cars.reverse()方法reverse()永久性地修改列表元素的排列順序,但可隨時(shí)恢復(fù)到原來(lái)的排列順序,為此只需對(duì)列表再次調(diào)用reverse()即可。

函數(shù)len()可快速獲悉列表的長(zhǎng)度。eg: len(cars)

操作列表

需要對(duì)列表中的每個(gè)元素都執(zhí)行相同的操作時(shí),可使用Python中的for循環(huán)。

eg:?magicians = ['alice', 'david', 'carolina']

for magician in magicians: (從列表magicians中取出一個(gè)名字,并將其存儲(chǔ)在變量magician中)

print(magician)

在for循環(huán)后面,沒有縮進(jìn)的代碼都只執(zhí)行一次,而不會(huì)重復(fù)執(zhí)行。

注意代碼縮進(jìn)錯(cuò)誤

for語(yǔ)句末尾的冒號(hào)告訴Python,下一行是循環(huán)的第一行。

在數(shù)據(jù)可視化中,處理的幾乎都是由數(shù)字(如溫度、距離、人口數(shù)量、經(jīng)度和緯度等)組成的集合,列表非常適合用于存儲(chǔ)數(shù)字集合。

函數(shù)range()讓Python從你指定的第一個(gè)值開始數(shù),并在到達(dá)你指定的第二個(gè)值后停止,因此輸出不包含第二個(gè)值(這里為5)。

eg: for value in range(1,5):

print(value)

要?jiǎng)?chuàng)建數(shù)字列表,可使用函數(shù)list()將range()的結(jié)果直接轉(zhuǎn)換為列表。如果將range()作為list()的參數(shù),輸出將為一個(gè)數(shù)字列表。

eg: numbers = list(range(1,6))

使用函數(shù)range()時(shí),還可指定步長(zhǎng)。在Python中,兩個(gè)星號(hào)(**)表示乘方運(yùn)算。

eg: even_numbers = list(range(2,11,2))

數(shù)字列表的最大值、最小值和總和:eg:min(digits)/ max(digits)/ sum(digits)

列表解析 將for循環(huán)和創(chuàng)建新元素的代碼合并成一行,并自動(dòng)附加新元素。

eg: squares = [value**2 for value in range(1,11)]表達(dá)式為value**2,它計(jì)算平方值。接下來(lái),編寫一個(gè)for循環(huán),用于給表達(dá)式提供值,再加上右方括號(hào)。在這個(gè)示例中,for循環(huán)為for value in range(1,11),它將值1~10提供給表達(dá)式value**2。

處理列表的部分元素——Python稱之為切片

要?jiǎng)?chuàng)建切片,可指定要使用的第一個(gè)元素和最后一個(gè)元素的索引。與函數(shù)range()一樣,Python在到達(dá)你指定的第二個(gè)索引前面的元素后停止。

eg: players[0:3]如果你沒有指定第一個(gè)索引,Python將自動(dòng)從列表開頭開始

如果要遍歷列表的部分元素,可在for循環(huán)中使用切片。

eg: for player in players[:3]:

要復(fù)制列表,可創(chuàng)建一個(gè)包含整個(gè)列表的切片,方法是同時(shí)省略起始索引和終止索引([:])。

eg: friend_foods = my_foods[:]將my_foods已有的的副本存儲(chǔ)到friend_foods,在其后對(duì)my_foods列表中元素的更改不會(huì)影響到friend_foods中的元素。

而friend_foods = my_foods則是讓Python將新變量friend_foods關(guān)聯(lián)到包含在my_foods中的列表,因此這兩個(gè)變量都指向同一個(gè)列表,兩個(gè)列表是相同的。

列表非常適合用于存儲(chǔ)在程序運(yùn)行期間可能變化的數(shù)據(jù)集。列表是可以修改的,這對(duì)處理網(wǎng)站的用戶列表或游戲中的角色列表至關(guān)重要。然而,有時(shí)候你需要?jiǎng)?chuàng)建一系列不可修改的元素,元組可以滿足這種需求。Python將不能修改的值稱為不可變的 ,而不可變的列表被稱為元組。試圖修改元組的操作是被禁止的(eg : dimensions[0] = 250)

使用圓括號(hào)來(lái)標(biāo)識(shí)。定義元組后,就可以使用索引來(lái)訪問其元素,就像訪問列表元素一樣。雖然不能修改元組的元素,但可以給存儲(chǔ)元組的變量賦值。因此,如果要修改前述矩形的尺寸,可重新定義整個(gè)元組:

eg : dimensions = (400, 100)將一個(gè)新元組存儲(chǔ)到變量dimensions中

若要提出Python語(yǔ)言修改建議,需要編寫Python改進(jìn)提案 (Python Enhancement Proposal,PEP)。PEP 8是最古老的PEP之一,它向Python程序員提供了代碼格式設(shè)置指南。

每條if語(yǔ)句的核心都是一個(gè)值為True或False的表達(dá)式,這種表達(dá)式被稱為 條件測(cè)試。Python根據(jù)條件測(cè)試的值為True還是False來(lái)決定是否執(zhí)行if語(yǔ)句中的代碼。如果條件測(cè)試的值為True,Python就執(zhí)行緊跟在if語(yǔ)句后面的代碼;如果為False,Python就忽略這些代碼。

大多數(shù)條件測(cè)試都將一個(gè)變量的當(dāng)前值同特定值進(jìn)行比較。最簡(jiǎn)單的條件測(cè)試檢查變量的值是否與特定值相等(==):不等(!=)

eg: >>> car = 'bmw'

>>> car == 'bmw'

True首先使用一個(gè)等號(hào)將car的值設(shè)置為'bmw',這種做法你已見過很多次。接下來(lái),使用兩個(gè)等號(hào)(==)檢查car的值是否為'bmw'。這個(gè)相等運(yùn)算符在它兩邊的值相等時(shí)返回True,否則返回False。在這個(gè)示例中,兩邊的值相等,因此Python返回True。

要檢查是否兩個(gè)條件都為True,可使用關(guān)鍵字and將兩個(gè)條件測(cè)試合而為一。為改善可讀性,可將每個(gè)測(cè)試都分別放在一對(duì)括號(hào)內(nèi),但并非必須這樣做。

eg: (age_0 >= 21) and (age_1 >= 21)

關(guān)鍵字or也能夠讓你檢查多個(gè)條件,但只要至少有一個(gè)條件滿足,就能通過整個(gè)測(cè)試。

要判斷特定的值是否已包含在列表中,可使用關(guān)鍵字in。

eg: >>> requested_toppings = ['mushrooms', 'onions', 'pineapple']

>>> 'mushrooms' in requested_toppings

True

還有些時(shí)候,確定特定的值未包含在列表中很重要;在這種情況下,可使用關(guān)鍵字not in。

eg: banned_users = ['andrew', 'carolina', 'david']

user = 'marie'

if user not in banned_users:

print(user.title() + ", you can post a response if you wish.")

布爾表達(dá)式 ,是條件測(cè)試的別名。與條件表達(dá)式一樣,布爾表達(dá)式的結(jié)果要么為True,要么為False。

if-else語(yǔ)句if-elif-else結(jié)構(gòu)測(cè)試通過后,Python將執(zhí)行緊跟在它后面的代碼,并跳過余下的測(cè)試。Python并不要求if-elif結(jié)構(gòu)后面必須有else代碼塊。

else是一條包羅萬(wàn)象的語(yǔ)句,只要不滿足任何if或elif中的條件測(cè)試,其中的代碼就會(huì)執(zhí)行,這可能會(huì)引入無(wú)效甚至惡意的數(shù)據(jù)。如果知道最終要測(cè)試的條件,應(yīng)考慮使用一個(gè)elif代碼塊來(lái)代替else代碼塊。這樣,你就可以肯定,僅當(dāng)滿足相應(yīng)的條件時(shí),你的代碼才會(huì)執(zhí)行。

有時(shí)候需檢查你關(guān)心的所有條件。在這種情況下,應(yīng)使用一系列不包含elif和else代碼塊的簡(jiǎn)單if語(yǔ)句。

eg: requested_toppings = ['mushrooms', 'extra cheese']

if 'mushrooms' in requested_toppings:

print("Adding mushrooms.")

if 'pepperoni' in requested_toppings:

print("Adding pepperoni.")

if 'extra cheese' in requested_toppings:

print("Adding extra cheese.")

print("\nFinished making your pizza!")

確定列表不是空的

eg: requested_toppings = []

if requested_toppings:在if語(yǔ)句中將列表名用在條件表達(dá)式中時(shí),Python將在列表至少包含一個(gè)元素時(shí)返回True,并在列表為空時(shí)返回False。

for requested_topping in requested_toppings:

print("Adding " + requested_topping + ".")

print("\nFinished making your pizza!")

else:

print("Are you sure you want a plain pizza?")

對(duì)于requested_toppings中的每個(gè)元素,都檢查它是否是比薩店供應(yīng)的配料,再?zèng)Q定是否在比薩中添加它:

eg: available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']如果比薩店供應(yīng)的配料是固定的,也可使用一個(gè)元組來(lái)存儲(chǔ)它們。

requested_toppings = ['mushrooms', 'french fries', 'extra cheese']

for requested_topping in requested_toppings:

if requested_topping in available_toppings:

print("Adding " + requested_topping + ".")

else:

print("Sorry, we don't have " + requested_topping + ".")

print("\nFinished making your pizza!")

在條件測(cè)試的格式設(shè)置方面,PEP 8提供的唯一建議是,在諸如==、>=和<=等比較運(yùn)算符兩邊各添加一個(gè)空格,

在Python中,字典是一系列鍵—值對(duì) 。每個(gè)鍵都與一個(gè)值相關(guān)聯(lián),你可以使用鍵來(lái)訪問與之相關(guān)聯(lián)的值。與鍵相關(guān)聯(lián)的值可以是數(shù)字、字符串、列表乃至字典。事實(shí)上,可將任何Python對(duì)象用作字典中的值。在Python中,字典用放在花括號(hào){}中的一系列鍵—值對(duì)表示,鍵—值對(duì)是兩個(gè)相關(guān)聯(lián)的值。指定鍵時(shí),Python將返回與之相關(guān)聯(lián)的值。鍵和值之間用冒號(hào)分隔,而鍵—值對(duì)之間用逗號(hào)分隔。在字典中,你想存儲(chǔ)多少個(gè)鍵—值對(duì)都可以,最簡(jiǎn)單的字典只有一個(gè)鍵—值對(duì)。

eg:alien_0 = {'color': 'green', 'points': 5}

print(alien_0['color'])

print(alien_0['points'])

要獲取與鍵相關(guān)聯(lián)的值,可依次指定字典名和放在方括號(hào)內(nèi)的鍵。

字典是一種動(dòng)態(tài)結(jié)構(gòu),可隨時(shí)在其中添加鍵—值對(duì)。要添加鍵—值對(duì),可依次指定字典名、用方括號(hào)括起的鍵和相關(guān)聯(lián)的值。

添加鍵—值對(duì)

eg: alien_0 = {'color': 'green', 'points': 5}

alien_0['x_position'] = 0

alien_0['y_position'] = 25

鍵—值對(duì)的排列順序與添加順序不同。Python不關(guān)心鍵—值對(duì)的添加順序,而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系。

可先使用一對(duì)空的花括號(hào)定義一個(gè)空字典,再分行添加各個(gè)鍵—值對(duì)。

eg: alien_0 = {}

alien_0['color'] = 'green'

alien_0['points'] = 5

使用字典來(lái)存儲(chǔ)用戶提供的數(shù)據(jù)或在編寫能自動(dòng)生成大量鍵—值對(duì)的代碼時(shí),通常都需要先定義一個(gè)空字典。

要修改字典中的值,可依次指定字典名、用方括號(hào)括起的鍵以及與該鍵相關(guān)聯(lián)的新值。

eg: alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}

print("Original x-position: " + str(alien_0['x_position']))

#向右移動(dòng)外星人

#據(jù)外星人當(dāng)前速度決定將其移動(dòng)多遠(yuǎn)

if alien_0['speed'] == 'slow':

x_increment = 1

elif alien_0['speed'] == 'medium':

x_increment = 2

else:

#這個(gè)外星人的速度一定很快

x_increment = 3

#新位置等于老位置加上增量

alien_0['x_position'] = alien_0['x_position'] + x_increment

print("New x-position: " + str(alien_0['x_position']))通過修改外星人字典中的值,可改變外星人的行為。

對(duì)于字典中不再需要的信息,可使用del語(yǔ)句將相應(yīng)的鍵—值對(duì)徹底刪除。使用del語(yǔ)句時(shí),必須指定字典名和要?jiǎng)h除的鍵。

eg: alien_0 = {'color': 'green', 'points': 5}

del alien_0['points']注意 刪除的鍵 — 值對(duì)永遠(yuǎn)消失了。

字典可以存儲(chǔ)一個(gè)對(duì)象(如游戲中的一個(gè)外星人)的多種信息,但你也可以使用字典來(lái)存儲(chǔ)眾多對(duì)象的同一種信息。確定需要使用多行來(lái)定義字典時(shí),在輸入左花括號(hào)后按回車鍵,再在下一行縮進(jìn)四個(gè)空格,指定第一個(gè)鍵—值對(duì),并在它后面加上一個(gè)逗號(hào)。

eg: favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}在最后一個(gè)鍵—值對(duì)后面加上逗號(hào),為以后在下一行添加鍵—值對(duì)做好準(zhǔn)備。

將較長(zhǎng)的print語(yǔ)句分成多行, 按回車鍵進(jìn)入print語(yǔ)句的后續(xù)各行,并使用Tab鍵將它們對(duì)齊并縮進(jìn)一級(jí)。在print語(yǔ)句的最后一行末尾加上右括號(hào)。

遍歷所有的鍵—值對(duì)

eg: user_0 = {

'username': 'efermi',

'first': 'enrico',

'last': 'fermi',

}

for key, value in user_0.items():

print("\nKey: " + key)

print("Value: " + value)

編寫用于遍歷字典的for循環(huán),可聲明兩個(gè)變量,用于存儲(chǔ)鍵—值對(duì)中的鍵和值。對(duì)于這兩個(gè)變量,可使用任何名稱。for語(yǔ)句的第二部分包含字典名和方法items(),它返回一個(gè)鍵—值對(duì)列表。接下來(lái),for循環(huán)依次將每個(gè)鍵—值對(duì)存儲(chǔ)到指定的兩個(gè)變量中。

注意,即便遍歷字典時(shí),鍵 — 值對(duì)的返回順序也與存儲(chǔ)順序不同。Python不關(guān)心鍵 — 值對(duì)的存儲(chǔ)順序,而只跟蹤鍵和值之間的關(guān)聯(lián)關(guān)系。

在不需要使用字典中的值時(shí),方法keys()很有用。

eg: for name in favorite_languages.keys():代碼行讓Python提取字典favorite_languages中的所有鍵,并依次將它們存儲(chǔ)到變量name中。

遍歷字典時(shí),會(huì)默認(rèn)遍歷所有的鍵,因此,如果將上述代碼中的for name in favorite_languages.keys():替換為for name in favorite_languages:,輸出將不變。

eg: favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}

friends = ['phil', 'sarah']

for name in favorite_languages.keys():

print(name.title())

if name in friends:

print(" Hi " + name.title() +

", I see your favorite language is " +

favorite_languages[name].title() + "!")

方法keys()并非只能用于遍歷;實(shí)際上,它返回一個(gè)列表,其中包含字典中的所有鍵,eg: if ?'erin' ?not ?in ?favorite_ languages.keys():

按順序遍歷字典中的所有鍵

字典總是明確地記錄鍵和值之間的關(guān)聯(lián)關(guān)系,但獲取字典的元素時(shí),獲取順序是不可預(yù)測(cè)的。一種辦法是在for循環(huán)中對(duì)返回的鍵進(jìn)行排序。為此,可使用函數(shù)sorted()來(lái)獲得按特定順序排列的鍵列表的副本:

eg: favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}

for name in sorted(favorite_languages.keys()):

print(name.title() + ", thank you for taking the poll.")

遍歷字典中的所有值

使用方法values(),它返回一個(gè)值列表,而不包含任何鍵。

eg: for language in favorite_languages.values():

這種做法提取字典中所有的值,而沒有考慮是否重復(fù)。為剔除重復(fù)項(xiàng),可使用集合(set)。集合類似于列表,但每個(gè)元素都必須是獨(dú)一無(wú)二的:

eg:for language in set(favorite_languages.values()):

通過對(duì)包含重復(fù)元素的列表調(diào)用set(),可讓Python找出列表中獨(dú)一無(wú)二的元素,并使用這些元素來(lái)創(chuàng)建一個(gè)集合。

有時(shí)候,需要將一系列字典存儲(chǔ)在列表中,或?qū)⒘斜碜鳛橹荡鎯?chǔ)在字典中,這稱為嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

字典列表

eg: alien_0 = {'color': 'green', 'points': 5}

alien_1 = {'color': 'yellow', 'points': 10}

alien_2 = {'color': 'red', 'points': 15}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:

print(alien)創(chuàng)建一個(gè)外星人列表,其中每個(gè)外星人都是一個(gè)字典,包含有關(guān)該外星人的各種信息。

eg: #創(chuàng)建一個(gè)用于存儲(chǔ)外星人的空列表每個(gè)外星人都是使用代碼自動(dòng)生成, 可以使用for循環(huán)和if語(yǔ)句來(lái)修改某些外星人的顏色。

aliens = []

#創(chuàng)建30個(gè)綠色的外星人

for alien_number in range(30):

new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}

aliens.append(new_alien)

for alien in aliens[0:3]:

if alien['color'] == 'green':

alien['color'] = 'yellow'

alien['speed'] = 'medium'

alien['points'] = 10

#顯示前五個(gè)外星人

for alien in aliens[:5]:

print(alien)

print("...")

#顯示創(chuàng)建了多少個(gè)外星人

print("Total number of aliens: " + str(len(aliens)))

在字典中存儲(chǔ)列表

每當(dāng)需要在字典中將一個(gè)鍵關(guān)聯(lián)到多個(gè)值時(shí),都可以在字典中嵌套一個(gè)列表。

eg: favorite_languages = {

'jen': ['python', 'ruby'],

'sarah': ['c'],

'edward': ['ruby', 'go'],

'phil': ['python', 'haskell'],

}

for name, languages in favorite_languages.items():

print("\n" + name.title() + "'s favorite languages are:")

for language in languages:

print("\t" + language.title())?? ’ \t’制表符,Tab

為進(jìn)一步改進(jìn)這個(gè)程序,可在遍歷字典的for循環(huán)開頭添加一條if語(yǔ)句,通過查看len(languages)的值來(lái)確定當(dāng)前的被調(diào)查者喜歡的語(yǔ)言是否有多種。如果他喜歡的語(yǔ)言有多種,就像以前一樣顯示輸出;如果只有一種,就相應(yīng)修改輸出的措辭,如顯示Sarah's favorite language is C。

注意 列表和字典的嵌套層級(jí)不應(yīng)太多。如果嵌套層級(jí)比前面的示例多得多,很可能有更簡(jiǎn)單的解決問題的方案。

在字典中存儲(chǔ)字典

例如,如果有多個(gè)網(wǎng)站用戶,每個(gè)都有獨(dú)特的用戶名,可在字典中將用戶名作為鍵,然后將每位用戶的信息存儲(chǔ)在一個(gè)字典中,并將該字典作為與用戶名相關(guān)聯(lián)的值。

eg: users = {

'aeinstein': {

'first': 'albert',

'last': 'einstein',

'location': 'princeton',

},

'mcurie': {

'first': 'marie',

'last': 'curie',

'location': 'paris',

},

}

for username, user_info in users.items():

print("\nUsername: " + username)

full_name = user_info['first'] + " " + user_info['last']

location = user_info['location']

print("\tFull name: " + full_name.title())

print("\tLocation: " + location.title())

注意,表示每位用戶的字典的結(jié)構(gòu)都相同,雖然Python并沒有這樣的要求,但這使得嵌套的字典處理起來(lái)更容易。倘若表示每位用戶的字典都包含不同的鍵,for循環(huán)內(nèi)部的代碼將更復(fù)雜。

輸入函數(shù)input(),通過獲取用戶輸入并學(xué)會(huì)控制程序的運(yùn)行時(shí)間,可編寫出交互式程序。函數(shù)input()讓程序暫停運(yùn)行,等待用戶輸入一些文本。獲取用戶輸入后,Python將其存儲(chǔ)在一個(gè)變量中。

eg: message = input("Tell me something, and I will repeat it back to you: ")

print(message)通過在提示末尾(這里是冒號(hào)后面)包含一個(gè)空格,可將提示與用戶輸入分開,讓用戶清楚地知道其輸入始于何處,

函數(shù)input()接受一個(gè)參數(shù):即要向用戶顯示的 提示 或說(shuō)明,讓用戶知道該如何做。程序等待用戶輸入,并在用戶按回車鍵后繼續(xù)運(yùn)行。輸入存儲(chǔ)在變量message中。

有時(shí)候,提示可能超過一行,這樣可將提示存儲(chǔ)在一個(gè)變量中,再將該變量傳遞給函數(shù)input()。這樣,即便提示超過一行,input()語(yǔ)句也非常清晰。

eg: prompt = "If you tell us who you are, we can personalize the messages you see."

prompt += "\nWhat is your first name? "

name = input(prompt)

print("\nHello, " + name + "!")

使用函數(shù)input()時(shí),Python將用戶輸入解讀為字符串。函數(shù)int()將數(shù)字的字符串表示轉(zhuǎn)換為數(shù)值表示。將數(shù)值輸入用于計(jì)算和比較前,務(wù)必將其轉(zhuǎn)換為數(shù)值表示。

求模運(yùn)算符(%)將兩個(gè)數(shù)相除并返回余數(shù),可利用這一點(diǎn)來(lái)判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù):

如果你使用的是Python 2.7,應(yīng)使用函數(shù)raw_input()來(lái)提示用戶輸入。這個(gè)函數(shù)與Python 3中的input()一樣,也將輸入解讀為字符串。Python 2.7也包含函數(shù)input(),但它將用戶輸入解讀為Python代碼,并嘗試運(yùn)行它們。

for循環(huán)用于針對(duì)集合中的每個(gè)元素都一個(gè)代碼塊,而while循環(huán)不斷地運(yùn)行,直到指定的條件不滿足為止。

如使用while循環(huán)來(lái)數(shù)數(shù)

eg: current_number = 1

while current_number <= 5:

print(current_number)

current_number += 1

例如,游戲使用while循環(huán),確保在玩家想玩時(shí)不斷運(yùn)行,并在玩家想退出時(shí)停止運(yùn)行。

eg: prompt = "\nTell me something, and I will repeat it back to you:"

prompt += "\nEnter 'quit' to end the program. "

message = ""

while message != 'quit':

message = input(prompt)

if message != 'quit':

print(message)

在要求很多條件都滿足才繼續(xù)運(yùn)行的程序中(例如,在游戲中,多種事件都可能導(dǎo)致游戲結(jié)束),可定義一個(gè)變量,用于判斷整個(gè)程序是否處于活動(dòng)狀態(tài)。這個(gè)變量被稱為標(biāo)志 ,充當(dāng)了程序的交通信號(hào)燈。你可讓程序在標(biāo)志為True時(shí)繼續(xù)運(yùn)行,并在任何事件導(dǎo)致標(biāo)志的值為False時(shí)讓程序停止運(yùn)行。這樣,在while語(yǔ)句中就只需檢查一個(gè)條件——標(biāo)志的當(dāng)前值是否為True,并將所有測(cè)試(是否發(fā)生了應(yīng)將標(biāo)志設(shè)置為False的事件)都放在其他地方,從而讓程序變得更為整潔。

eg: prompt = "\nTell me something, and I will repeat it back to you:"

prompt += "\nEnter 'quit' to end the program. "

active = True

while active:

message = input(prompt)

if message == 'quit':

active = False

else:

print(message)

在復(fù)雜的程序中,如很多事件都會(huì)導(dǎo)致程序停止運(yùn)行的游戲中,標(biāo)志很有

用:在其中的任何一個(gè)事件導(dǎo)致活動(dòng)標(biāo)志變成False時(shí),主游戲循環(huán)將退出,此時(shí)可顯示一條游戲結(jié)束消息,并讓用戶選擇是否要重新玩。

要立即退出while循環(huán),不再運(yùn)行循環(huán)中余下的代碼,也不管條件測(cè)試的結(jié)果如何,可使用break語(yǔ)句。break語(yǔ)句用于控制程序流程,可使用它來(lái)控制哪些代碼行將執(zhí)行,

哪些代碼行不執(zhí)行,從而讓程序按你的要求執(zhí)行你要執(zhí)行的代碼。

eg: prompt = "\nPlease enter the name of a city you have visited:"

prompt += "\n(Enter 'quit' when you are finished.) "

while True:

city = input(prompt)

if city == 'quit':

break

else:

print("I'd love to go to " + city.title() + "!")

注意 在任何Python循環(huán)中都可使用break語(yǔ)句。例如,可使用break語(yǔ)句來(lái)退出遍歷列表或字典的for循環(huán)。

要返回到循環(huán)開頭,并根據(jù)條件測(cè)試結(jié)果決定是否繼續(xù)執(zhí)行循環(huán),可使用continue語(yǔ)句,它不break語(yǔ)句那樣不再執(zhí)行余下的代碼并退出整個(gè)循環(huán)。

eg: current_number = 0

while current_number < 10:

current_number += 1

if current_number % 2 == 0:

continue

print(current_number)如從1數(shù)到10,但只打印其中奇數(shù)的循環(huán)

如果程序陷入無(wú)限循環(huán),可按Ctrl + C,也可關(guān)閉顯示程序輸出的終端窗口。要避免編寫無(wú)限循環(huán),務(wù)必對(duì)每個(gè)while循環(huán)進(jìn)行測(cè)試,確保它按預(yù)期那樣結(jié)束。如果你希望程序在用戶輸入特定值時(shí)結(jié)束,可運(yùn)行程序并輸入這樣的值;如果在這種情況下程序沒有結(jié)束,請(qǐng)檢查程序處理這個(gè)值的方式,確認(rèn)程序至少有一個(gè)這樣的地方能讓循環(huán)條件為False或讓break語(yǔ)句得以執(zhí)行。

要記錄大量的用戶和信息,需要在while循環(huán)中使用列表和字典。for循環(huán)是一種遍歷列表的有效方式,但在for循環(huán)中不應(yīng)修改列表,否則將導(dǎo)致Python難以跟蹤其中的元素。要在遍歷列表的同時(shí)對(duì)其進(jìn)行修改,可使用while循環(huán)。通過將while循環(huán)同列表和字典結(jié)合起來(lái)使用,可收集、存儲(chǔ)并組織大量輸入,供以后查看和顯示。

使用一個(gè)while循環(huán),在驗(yàn)證用戶的同時(shí)將其從未驗(yàn)證用戶列表中提取出來(lái),再將其加入到另一個(gè)已驗(yàn)證用戶列表中。

eg:? #首先,創(chuàng)建一個(gè)待驗(yàn)證用戶列表

#和一個(gè)用于存儲(chǔ)已驗(yàn)證用戶的空列表

unconfirmed_users = ['alice', 'brian', 'candace']

confirmed_users = []

#驗(yàn)證每個(gè)用戶,直到?jīng)]有未驗(yàn)證用戶為止

#將每個(gè)經(jīng)過驗(yàn)證的列表都移到已驗(yàn)證用戶列表中

while unconfirmed_users:? while循環(huán)將不斷地運(yùn)行,直到列表unconfirmed _users變成空的。

current_user = unconfirmed_users.pop()

print("Verifying user: " + current_user.title())

confirmed_users.append(current_user)

#顯示所有已驗(yàn)證的用戶

print("\nThe following users have been confirmed:")

for confirmed_user in confirmed_users:

print(confirmed_user.title())

刪除包含特定值的所有列表元素

eg: pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']

print(pets)

while 'cat' in pets:

pets.remove('cat')

print(pets)

使用用戶輸入來(lái)填充字典,可使用while循環(huán)提示用戶輸入任意數(shù)量的信息。

eg: responses = {}

#設(shè)置一個(gè)標(biāo)志,指出調(diào)查是否繼續(xù)

polling_active = True

while polling_active:

#提示輸入被調(diào)查者的名字和回答

name = input("\nWhat is your name? ")

response = input("Which mountain would you like to climb someday? ")

#將答卷存儲(chǔ)在字典中

responses[name] = response

#看看是否還有人要參與調(diào)查

repeat = input("Would you like to let another person respond? (yes/ no) ")

if repeat == 'no':

polling_active = False

#調(diào)查結(jié)束,顯示結(jié)果

print("\n--- Poll Results ---")

for name, response in responses.items():

print(name + " would like to climb " + response + ".")

總結(jié)

以上是生活随笔為你收集整理的python之禅星号_Python基础1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。