python之禅星号_Python基础1
介紹Python基礎,包括變量和簡單數據類型、列表基礎、操作列表、if語句、字典、輸入函數和while循環
在文件名和文件夾名中,最好使用小寫字母,并使用下劃線來表示空格,因為這是Python采用的命名約定
如果輸出的時間太長,按Ctrl + C停止輸出,或關閉輸出窗口
每當要運行Python代碼片段時,都請打開一個命令窗口并啟動Python終端會話。要關閉該終端會話,可按Ctrl + Z,再按回車鍵,也可執行命令exit() 。
python.org:瀏覽Python主頁(http://python.org/),尋找你感興趣的主題。你對Python越熟悉,這個網站對你來說就越有用。
每個變量都存儲了一個值——與變量相關聯的信息。在程序中可隨時修改變量的值,而Python將始終記錄變量的最新值。
程序存在錯誤時,Python解釋器將竭盡所能地幫助你找出問題所在。程序無法成功地運行時,解釋器會提供一個traceback。traceback是一條記錄,指出了解釋器嘗試運行代碼時,在什么地方陷入了困境。
名稱錯誤通常意味著兩種情況:要么是使用變量前忘記了給它賦值,要么是輸入變量名時拼寫不正確。
方法是Python可對數據執行的操作。在name.title()中,name后面的句點(.)讓Python對變量name執行方法title()指定的操作。每個方法后面都跟著一對括號,這是因為方法通常需要額外的信息來完成其工作。這種信息是在括號內提供的。函數title()不需要額外的信息,因此它后面的括號是空的。title()以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母都改為大寫。
要將字符串改為全部大寫或全部小寫的處理方法:upper()、lower()。存儲數據時,方法lower()很有用。很多時候,你無法依靠用戶來提供正確的大小寫,因此需要將字符串先轉換為小寫,再存儲它們。以后需要顯示這些信息時,再將其轉換為最合適的大小寫方式。
使用加號(+)來合并字符串。這種合并字符串的方法稱為 拼接 。通過拼接,可使用存儲在變量中的信息來創建完整的消息。
要在字符串中添加制表符,可使用字符組合\t,eg:print("\tPython")
要在字符串中添加換行符,可使用字符組合\n,eg:print("C\nJavaScript\n")
Python能夠找出字符串開頭和末尾多余的空白。要確保字符串末尾沒有空白,可使用方法rstrip()。然而,這種刪除只是暫時的,接下來再次詢問 該變量的值時,你會發現這個字符串與輸入時一樣,依然包含多余的空白。要永久刪除這個字符串中的空白,必須將刪除操作的結果存回到變量中。你還可以剔除字符串開頭的空白,或同時剔除字符串兩端的空白。為此,可分別使用方法lstrip()和strip():
使用兩個乘號表示乘方運算,空格不影響Python計算表達式的方式,它們的存在旨在讓你閱讀代碼時,能迅速確定先執行哪些運算。Python將帶小數點的數字都稱為浮點數。
但需要注意的是,結果包含的小數位數可能是不確定的:所有語言都存在這種問題,沒有什么可擔心的。Python會盡力找到一種方式,以盡可能精確地表示結果,但鑒于計算機內部表示數字的方式,這在有些情況下很難。就現在而言,
暫時忽略多余的小數位數即可。eg:>>> 0.2 + 0.1??? 0.30000000000000004
調用函數str(),Python將非字符串值表示為字符串:
Python社區的理念都包含在Tim Peters撰寫的“Python之禪”中。要獲悉這些有關編寫優秀Python代碼的指導原則,只需在解釋器中執行命令import this。
列表
列表由一系列按特定順序排列的元素組成。在Python中,用方括號([])來表示列表,并用逗號來分隔其中的元素。列表是有序集合,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴Python即可。要訪問列表元素,可指出列表的名稱,再指出元素的索引,并將其放在方括號內。在Python中,第一個列表元素的索引為0,而不是1。Python為訪問最后一個列表元素提供了一種特殊語法。通過將索引指定為-1,可讓Python返回最后一個列表元素。
你創建的大多數列表都將是動態的,這意味著列表創建后,將隨著程序的運行增刪元素。要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。
方法append()將元素添加到了列表末尾,而不影響列表中的其他所有元素:eg: motorcycles.append('ducati')
方法insert()可在列表的任何位置添加新元素。需要指定新元素的索引和值。這種操作將列表中既有的每個元素都右移一個位置:eg: motorcycles.insert(0, 'ducati')
可以根據位置或值來刪除列表中的元素。如果知道要刪除的元素在列表中的位置,可使用del語句。eg:del motorcycles[0]使用del語句將值從列表中刪除后,你就無法再訪問它了。
方法pop()可刪除列表末尾的元素,并讓你能夠接著使用它。術語彈出(pop)源自這樣的類比:列表就像一個棧,而刪除列表末尾的元素相當于彈出棧頂元素。eg: popped_motorcycle = motorcycles.pop()實際上也可以使用pop()來刪除列表中任何位置的元素,只需在括號中指定要刪除的元素的索引即可。eg: first_owned = motorcycles.pop(0)每當使用pop()時,被彈出的元素就不再在原列表中了。
根據值刪除元素,可使用方法remove(),在括號中寫入要刪除的值。方法remove()只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用循環來判斷是否刪除了所有這樣的值。要刪除的值可以存儲在其他變量中,并被其他變量使用。
方法sort()永久性地修改了列表元素的排列順序。按與字母順序相反的順序排列列表元素,只需向sort()方法傳遞參數reverse=True。eg: cars.sort(reverse=True)
函數sorted()能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排列順序。eg: sorted(cars)調用函數sorted()后,列表元素的排列順序并沒有變。如果要按與字母順序相反的順序顯示列表,也可向函數sorted()傳遞參數reverse=True。
要反轉列表元素的排列順序,可使用方法reverse()。reverse()不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排列順序:eg: cars.reverse()方法reverse()永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,為此只需對列表再次調用reverse()即可。
函數len()可快速獲悉列表的長度。eg: len(cars)
操作列表
需要對列表中的每個元素都執行相同的操作時,可使用Python中的for循環。
eg:?magicians = ['alice', 'david', 'carolina']
for magician in magicians: (從列表magicians中取出一個名字,并將其存儲在變量magician中)
print(magician)
在for循環后面,沒有縮進的代碼都只執行一次,而不會重復執行。
注意代碼縮進錯誤
for語句末尾的冒號告訴Python,下一行是循環的第一行。
在數據可視化中,處理的幾乎都是由數字(如溫度、距離、人口數量、經度和緯度等)組成的集合,列表非常適合用于存儲數字集合。
函數range()讓Python從你指定的第一個值開始數,并在到達你指定的第二個值后停止,因此輸出不包含第二個值(這里為5)。
eg: for value in range(1,5):
print(value)
要創建數字列表,可使用函數list()將range()的結果直接轉換為列表。如果將range()作為list()的參數,輸出將為一個數字列表。
eg: numbers = list(range(1,6))
使用函數range()時,還可指定步長。在Python中,兩個星號(**)表示乘方運算。
eg: even_numbers = list(range(2,11,2))
數字列表的最大值、最小值和總和:eg:min(digits)/ max(digits)/ sum(digits)
列表解析 將for循環和創建新元素的代碼合并成一行,并自動附加新元素。
eg: squares = [value**2 for value in range(1,11)]表達式為value**2,它計算平方值。接下來,編寫一個for循環,用于給表達式提供值,再加上右方括號。在這個示例中,for循環為for value in range(1,11),它將值1~10提供給表達式value**2。
處理列表的部分元素——Python稱之為切片
要創建切片,可指定要使用的第一個元素和最后一個元素的索引。與函數range()一樣,Python在到達你指定的第二個索引前面的元素后停止。
eg: players[0:3]如果你沒有指定第一個索引,Python將自動從列表開頭開始
如果要遍歷列表的部分元素,可在for循環中使用切片。
eg: for player in players[:3]:
要復制列表,可創建一個包含整個列表的切片,方法是同時省略起始索引和終止索引([:])。
eg: friend_foods = my_foods[:]將my_foods已有的的副本存儲到friend_foods,在其后對my_foods列表中元素的更改不會影響到friend_foods中的元素。
而friend_foods = my_foods則是讓Python將新變量friend_foods關聯到包含在my_foods中的列表,因此這兩個變量都指向同一個列表,兩個列表是相同的。
列表非常適合用于存儲在程序運行期間可能變化的數據集。列表是可以修改的,這對處理網站的用戶列表或游戲中的角色列表至關重要。然而,有時候你需要創建一系列不可修改的元素,元組可以滿足這種需求。Python將不能修改的值稱為不可變的 ,而不可變的列表被稱為元組。試圖修改元組的操作是被禁止的(eg : dimensions[0] = 250)
使用圓括號來標識。定義元組后,就可以使用索引來訪問其元素,就像訪問列表元素一樣。雖然不能修改元組的元素,但可以給存儲元組的變量賦值。因此,如果要修改前述矩形的尺寸,可重新定義整個元組:
eg : dimensions = (400, 100)將一個新元組存儲到變量dimensions中
若要提出Python語言修改建議,需要編寫Python改進提案 (Python Enhancement Proposal,PEP)。PEP 8是最古老的PEP之一,它向Python程序員提供了代碼格式設置指南。
每條if語句的核心都是一個值為True或False的表達式,這種表達式被稱為 條件測試。Python根據條件測試的值為True還是False來決定是否執行if語句中的代碼。如果條件測試的值為True,Python就執行緊跟在if語句后面的代碼;如果為False,Python就忽略這些代碼。
大多數條件測試都將一個變量的當前值同特定值進行比較。最簡單的條件測試檢查變量的值是否與特定值相等(==):不等(!=)
eg: >>> car = 'bmw'
>>> car == 'bmw'
True首先使用一個等號將car的值設置為'bmw',這種做法你已見過很多次。接下來,使用兩個等號(==)檢查car的值是否為'bmw'。這個相等運算符在它兩邊的值相等時返回True,否則返回False。在這個示例中,兩邊的值相等,因此Python返回True。
要檢查是否兩個條件都為True,可使用關鍵字and將兩個條件測試合而為一。為改善可讀性,可將每個測試都分別放在一對括號內,但并非必須這樣做。
eg: (age_0 >= 21) and (age_1 >= 21)
關鍵字or也能夠讓你檢查多個條件,但只要至少有一個條件滿足,就能通過整個測試。
要判斷特定的值是否已包含在列表中,可使用關鍵字in。
eg: >>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'mushrooms' in requested_toppings
True
還有些時候,確定特定的值未包含在列表中很重要;在這種情況下,可使用關鍵字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.")
布爾表達式 ,是條件測試的別名。與條件表達式一樣,布爾表達式的結果要么為True,要么為False。
if-else語句if-elif-else結構測試通過后,Python將執行緊跟在它后面的代碼,并跳過余下的測試。Python并不要求if-elif結構后面必須有else代碼塊。
else是一條包羅萬象的語句,只要不滿足任何if或elif中的條件測試,其中的代碼就會執行,這可能會引入無效甚至惡意的數據。如果知道最終要測試的條件,應考慮使用一個elif代碼塊來代替else代碼塊。這樣,你就可以肯定,僅當滿足相應的條件時,你的代碼才會執行。
有時候需檢查你關心的所有條件。在這種情況下,應使用一系列不包含elif和else代碼塊的簡單if語句。
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語句中將列表名用在條件表達式中時,Python將在列表至少包含一個元素時返回True,并在列表為空時返回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?")
對于requested_toppings中的每個元素,都檢查它是否是比薩店供應的配料,再決定是否在比薩中添加它:
eg: available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']如果比薩店供應的配料是固定的,也可使用一個元組來存儲它們。
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!")
在條件測試的格式設置方面,PEP 8提供的唯一建議是,在諸如==、>=和<=等比較運算符兩邊各添加一個空格,
在Python中,字典是一系列鍵—值對 。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字符串、列表乃至字典。事實上,可將任何Python對象用作字典中的值。在Python中,字典用放在花括號{}中的一系列鍵—值對表示,鍵—值對是兩個相關聯的值。指定鍵時,Python將返回與之相關聯的值。鍵和值之間用冒號分隔,而鍵—值對之間用逗號分隔。在字典中,你想存儲多少個鍵—值對都可以,最簡單的字典只有一個鍵—值對。
eg:alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])
要獲取與鍵相關聯的值,可依次指定字典名和放在方括號內的鍵。
字典是一種動態結構,可隨時在其中添加鍵—值對。要添加鍵—值對,可依次指定字典名、用方括號括起的鍵和相關聯的值。
添加鍵—值對
eg: alien_0 = {'color': 'green', 'points': 5}
alien_0['x_position'] = 0
alien_0['y_position'] = 25
鍵—值對的排列順序與添加順序不同。Python不關心鍵—值對的添加順序,而只關心鍵和值之間的關聯關系。
可先使用一對空的花括號定義一個空字典,再分行添加各個鍵—值對。
eg: alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
使用字典來存儲用戶提供的數據或在編寫能自動生成大量鍵—值對的代碼時,通常都需要先定義一個空字典。
要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及與該鍵相關聯的新值。
eg: alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print("Original x-position: " + str(alien_0['x_position']))
#向右移動外星人
#據外星人當前速度決定將其移動多遠
if alien_0['speed'] == 'slow':
x_increment = 1
elif alien_0['speed'] == 'medium':
x_increment = 2
else:
#這個外星人的速度一定很快
x_increment = 3
#新位置等于老位置加上增量
alien_0['x_position'] = alien_0['x_position'] + x_increment
print("New x-position: " + str(alien_0['x_position']))通過修改外星人字典中的值,可改變外星人的行為。
對于字典中不再需要的信息,可使用del語句將相應的鍵—值對徹底刪除。使用del語句時,必須指定字典名和要刪除的鍵。
eg: alien_0 = {'color': 'green', 'points': 5}
del alien_0['points']注意 刪除的鍵 — 值對永遠消失了。
字典可以存儲一個對象(如游戲中的一個外星人)的多種信息,但你也可以使用字典來存儲眾多對象的同一種信息。確定需要使用多行來定義字典時,在輸入左花括號后按回車鍵,再在下一行縮進四個空格,指定第一個鍵—值對,并在它后面加上一個逗號。
eg: favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}在最后一個鍵—值對后面加上逗號,為以后在下一行添加鍵—值對做好準備。
將較長的print語句分成多行, 按回車鍵進入print語句的后續各行,并使用Tab鍵將它們對齊并縮進一級。在print語句的最后一行末尾加上右括號。
遍歷所有的鍵—值對
eg: user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
print("\nKey: " + key)
print("Value: " + value)
編寫用于遍歷字典的for循環,可聲明兩個變量,用于存儲鍵—值對中的鍵和值。對于這兩個變量,可使用任何名稱。for語句的第二部分包含字典名和方法items(),它返回一個鍵—值對列表。接下來,for循環依次將每個鍵—值對存儲到指定的兩個變量中。
注意,即便遍歷字典時,鍵 — 值對的返回順序也與存儲順序不同。Python不關心鍵 — 值對的存儲順序,而只跟蹤鍵和值之間的關聯關系。
在不需要使用字典中的值時,方法keys()很有用。
eg: for name in favorite_languages.keys():代碼行讓Python提取字典favorite_languages中的所有鍵,并依次將它們存儲到變量name中。
遍歷字典時,會默認遍歷所有的鍵,因此,如果將上述代碼中的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()并非只能用于遍歷;實際上,它返回一個列表,其中包含字典中的所有鍵,eg: if ?'erin' ?not ?in ?favorite_ languages.keys():
按順序遍歷字典中的所有鍵
字典總是明確地記錄鍵和值之間的關聯關系,但獲取字典的元素時,獲取順序是不可預測的。一種辦法是在for循環中對返回的鍵進行排序。為此,可使用函數sorted()來獲得按特定順序排列的鍵列表的副本:
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(),它返回一個值列表,而不包含任何鍵。
eg: for language in favorite_languages.values():
這種做法提取字典中所有的值,而沒有考慮是否重復。為剔除重復項,可使用集合(set)。集合類似于列表,但每個元素都必須是獨一無二的:
eg:for language in set(favorite_languages.values()):
通過對包含重復元素的列表調用set(),可讓Python找出列表中獨一無二的元素,并使用這些元素來創建一個集合。
有時候,需要將一系列字典存儲在列表中,或將列表作為值存儲在字典中,這稱為嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
字典列表
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)創建一個外星人列表,其中每個外星人都是一個字典,包含有關該外星人的各種信息。
eg: #創建一個用于存儲外星人的空列表每個外星人都是使用代碼自動生成, 可以使用for循環和if語句來修改某些外星人的顏色。
aliens = []
#創建30個綠色的外星人
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
#顯示前五個外星人
for alien in aliens[:5]:
print(alien)
print("...")
#顯示創建了多少個外星人
print("Total number of aliens: " + str(len(aliens)))
在字典中存儲列表
每當需要在字典中將一個鍵關聯到多個值時,都可以在字典中嵌套一個列表。
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
為進一步改進這個程序,可在遍歷字典的for循環開頭添加一條if語句,通過查看len(languages)的值來確定當前的被調查者喜歡的語言是否有多種。如果他喜歡的語言有多種,就像以前一樣顯示輸出;如果只有一種,就相應修改輸出的措辭,如顯示Sarah's favorite language is C。
注意 列表和字典的嵌套層級不應太多。如果嵌套層級比前面的示例多得多,很可能有更簡單的解決問題的方案。
在字典中存儲字典
例如,如果有多個網站用戶,每個都有獨特的用戶名,可在字典中將用戶名作為鍵,然后將每位用戶的信息存儲在一個字典中,并將該字典作為與用戶名相關聯的值。
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())
注意,表示每位用戶的字典的結構都相同,雖然Python并沒有這樣的要求,但這使得嵌套的字典處理起來更容易。倘若表示每位用戶的字典都包含不同的鍵,for循環內部的代碼將更復雜。
輸入函數input(),通過獲取用戶輸入并學會控制程序的運行時間,可編寫出交互式程序。函數input()讓程序暫停運行,等待用戶輸入一些文本。獲取用戶輸入后,Python將其存儲在一個變量中。
eg: message = input("Tell me something, and I will repeat it back to you: ")
print(message)通過在提示末尾(這里是冒號后面)包含一個空格,可將提示與用戶輸入分開,讓用戶清楚地知道其輸入始于何處,
函數input()接受一個參數:即要向用戶顯示的 提示 或說明,讓用戶知道該如何做。程序等待用戶輸入,并在用戶按回車鍵后繼續運行。輸入存儲在變量message中。
有時候,提示可能超過一行,這樣可將提示存儲在一個變量中,再將該變量傳遞給函數input()。這樣,即便提示超過一行,input()語句也非常清晰。
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 + "!")
使用函數input()時,Python將用戶輸入解讀為字符串。函數int()將數字的字符串表示轉換為數值表示。將數值輸入用于計算和比較前,務必將其轉換為數值表示。
求模運算符(%)將兩個數相除并返回余數,可利用這一點來判斷一個數是奇數還是偶數:
如果你使用的是Python 2.7,應使用函數raw_input()來提示用戶輸入。這個函數與Python 3中的input()一樣,也將輸入解讀為字符串。Python 2.7也包含函數input(),但它將用戶輸入解讀為Python代碼,并嘗試運行它們。
for循環用于針對集合中的每個元素都一個代碼塊,而while循環不斷地運行,直到指定的條件不滿足為止。
如使用while循環來數數
eg: current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
例如,游戲使用while循環,確保在玩家想玩時不斷運行,并在玩家想退出時停止運行。
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)
在要求很多條件都滿足才繼續運行的程序中(例如,在游戲中,多種事件都可能導致游戲結束),可定義一個變量,用于判斷整個程序是否處于活動狀態。這個變量被稱為標志 ,充當了程序的交通信號燈。你可讓程序在標志為True時繼續運行,并在任何事件導致標志的值為False時讓程序停止運行。這樣,在while語句中就只需檢查一個條件——標志的當前值是否為True,并將所有測試(是否發生了應將標志設置為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)
在復雜的程序中,如很多事件都會導致程序停止運行的游戲中,標志很有
用:在其中的任何一個事件導致活動標志變成False時,主游戲循環將退出,此時可顯示一條游戲結束消息,并讓用戶選擇是否要重新玩。
要立即退出while循環,不再運行循環中余下的代碼,也不管條件測試的結果如何,可使用break語句。break語句用于控制程序流程,可使用它來控制哪些代碼行將執行,
哪些代碼行不執行,從而讓程序按你的要求執行你要執行的代碼。
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循環中都可使用break語句。例如,可使用break語句來退出遍歷列表或字典的for循環。
要返回到循環開頭,并根據條件測試結果決定是否繼續執行循環,可使用continue語句,它不break語句那樣不再執行余下的代碼并退出整個循環。
eg: current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)如從1數到10,但只打印其中奇數的循環
如果程序陷入無限循環,可按Ctrl + C,也可關閉顯示程序輸出的終端窗口。要避免編寫無限循環,務必對每個while循環進行測試,確保它按預期那樣結束。如果你希望程序在用戶輸入特定值時結束,可運行程序并輸入這樣的值;如果在這種情況下程序沒有結束,請檢查程序處理這個值的方式,確認程序至少有一個這樣的地方能讓循環條件為False或讓break語句得以執行。
要記錄大量的用戶和信息,需要在while循環中使用列表和字典。for循環是一種遍歷列表的有效方式,但在for循環中不應修改列表,否則將導致Python難以跟蹤其中的元素。要在遍歷列表的同時對其進行修改,可使用while循環。通過將while循環同列表和字典結合起來使用,可收集、存儲并組織大量輸入,供以后查看和顯示。
使用一個while循環,在驗證用戶的同時將其從未驗證用戶列表中提取出來,再將其加入到另一個已驗證用戶列表中。
eg:? #首先,創建一個待驗證用戶列表
#和一個用于存儲已驗證用戶的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
#驗證每個用戶,直到沒有未驗證用戶為止
#將每個經過驗證的列表都移到已驗證用戶列表中
while unconfirmed_users:? while循環將不斷地運行,直到列表unconfirmed _users變成空的。
current_user = unconfirmed_users.pop()
print("Verifying user: " + current_user.title())
confirmed_users.append(current_user)
#顯示所有已驗證的用戶
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)
使用用戶輸入來填充字典,可使用while循環提示用戶輸入任意數量的信息。
eg: responses = {}
#設置一個標志,指出調查是否繼續
polling_active = True
while polling_active:
#提示輸入被調查者的名字和回答
name = input("\nWhat is your name? ")
response = input("Which mountain would you like to climb someday? ")
#將答卷存儲在字典中
responses[name] = response
#看看是否還有人要參與調查
repeat = input("Would you like to let another person respond? (yes/ no) ")
if repeat == 'no':
polling_active = False
#調查結束,顯示結果
print("\n--- Poll Results ---")
for name, response in responses.items():
print(name + " would like to climb " + response + ".")
總結
以上是生活随笔為你收集整理的python之禅星号_Python基础1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20款厨具消毒机对比测试 格力、大宇等品
- 下一篇: 曝realme真我GT Neo5 SE屏