1. 程式人生 > >《Python程式設計:從入門到實踐》 第七天

《Python程式設計:從入門到實踐》 第七天

5.4 使用if語句處理

5.4.1 檢查特殊元素 5.4.2 確定列表不是空的

requested_toppings = [] 
	if requested_toppings: 
 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?") 

在if表示式中,python將在列表至少包含一個元素時返回True,並在列表為空時返回False。 5.4.3 使用多個列表

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 + ".") 

5.5 設定if語句的格式 在條件測試的格式設定方面,PEP 8提供的唯一建議是,在諸如==、>=和<=等比較運算子兩邊各新增一個空格。

5.6 總結

第六章 字典 將學習能夠將相關資訊關聯起來的Python字典。將學習如何訪問和修改字典中的資訊。會演示如何遍歷字典中的資料。另外,還將學習儲存字典的列表、儲存列表的字典和儲存字典的字典。

6.1 一個簡單的字典 下面是一個簡單的字典:

alien_0 = {'color': 'green', 'points': 5} 
print(alien_0['color']) 
print(alien_0['points'])
輸出:
green 
5

6.2 使用字典 在Python中,字典是一系列鍵_值對。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字串、列表乃至字典。事實上,可將任何Python物件用作字典中的值。 在Python中,字典用放在花括號{}中的一系列鍵—值對錶示。 鍵—值對是兩個相關聯的值。指定鍵時,Python將返回與之相關聯的值。鍵和值之間用冒號分隔,而鍵—值對之間用逗號分隔。

6.2.1 訪問字典中的值

alien_0 = {'color':'green','points':5}
new_points = alien_0['points']
print("You just enrned " + str(new_points) + "points!")

字典中可包含任意數量的鍵_值對。 上述程式碼首先定義了一個字典,然後從這個字典中獲取與鍵’points’相關聯的值,並將這個值儲存在變數new_points中。接下來,將這個整數轉換為字串,並列印訊息。

6.2.2 新增鍵_值對 字典是一種動態結構,可隨時在其中新增鍵—值對。要新增鍵—值對,可依次指定字典名、用方括號括起的鍵和相關聯的值。

alien_0 = {'color':'green','points':5}
print(alien_0)

alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
輸出:
{'color': 'green', 'points': 5} 
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0} 

注意,鍵—值對的排列順序與新增順序不同。Python不關心鍵—值對的新增順序,而只關心鍵和值之間的關聯關係。

6.2.3 先建立一個空字典 可先使用一對空的花括號定義一個字典,再分行新增各個鍵—值對。

alien_0 = {} 
alien_0['color'] = 'green' 
alien_0['points'] = 5
print(alien_0) 
使用字典來儲存使用者提供的資料或在編寫能自動生成大量鍵—值對的程式碼時,通常都需要先定義一個空字典。

6.2.4 修改字典中的值 要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及與該鍵相關聯的新值.

alien_0 = {'color': 'green'} 
print("The alien is " + alien_0['color'] + ".") 
alien_0['color'] = 'yellow' 
print("The alien is now " + alien_0['color'] + ".") 

# 對一個能夠以不同速度移動的外星人的位置進行跟蹤。為此,我們
# 將儲存該外星人的當前速度,並據此確定該外星人將向右移動多遠
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']))

6.2.5 刪除鍵_值對 對於字典中不再需要的資訊,可使用del語句將相應的鍵—值對徹底刪除。使用del語句時,必須指定字典名和要刪除的鍵。

alien_0 = {'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)
輸出:
{'color': 'green', 'points': 5}
{'color': 'green'}

注意:刪除的鍵—值對永遠消失了。

6.2.6 由類似物件組成的字典 字典可以儲存一個物件的多種資訊,也可以儲存眾多物件的同一種資訊。 (確定需要使用多行來定義字典時,在輸入左花括號後按回車鍵,再在下一行縮排四個空格,指定第一個鍵—值對,並在它後面加上一個逗號。此後你再次按回車鍵時,文字編輯器將自動縮排後續鍵—值對,且縮排量與第一個鍵—值對相同。可以在最後一個鍵_值對後面也加上逗號,為以後在下一行新增鍵_ 值對做好準備。)

favorite_languages = {
 'jen': 'python',
 'sarah': 'c',
 'edward': 'ruby',
 'phil': 'python',
 }
print("Sarah's favorite language is " +
      favorite_languages['sarah'].title() +
      ".")

6.3 遍歷字典 Python支援對字典遍歷。可遍歷字典的所有鍵—值對、鍵或值。

6.3.1 遍歷所有的鍵_值對

user_0 = {
    'usename':'efermi',
    'first':'enrico',
    'last':'fermi',
}
#想獲悉該使用者字典中的所有資訊,用for迴圈遍歷這個字典
for key,value in user_0.items():  #方法items(),返回一個鍵_值對列表
    print("\nKey:" + key)
    print("Value:" + value)

字典的items方法作用:是可以將字典中的所有項,以列表方式返回。因為字典是無序的,所以用items方法返回字典的所有項,也是沒有順序的。 即便遍歷字典時,鍵—值對的返回順序也與儲存順序不同,Python不關心鍵—值對的儲存順序,而只跟蹤鍵和值之間的關聯關係。 6.3.2 遍歷字典中的所有鍵 在不需要使用字典中的值時,方法keys()很有用。

#方法keys()遍歷字典中的所有鍵
favorite_languages = {
 'jen': 'python',
 'sarah': 'c',
 'edward': 'ruby',
 'phil': 'python',
 }
for name in favorite_languages.keys():
 print(name.title())

遍歷字典時,會預設遍歷所有的鍵,因此,如果將上述程式碼中的for name in favorite_ languages.keys():替換為for name in favorite_languages:,輸出將不變。可以顯示的使用方法key(),也可以直接忽略。 在這種迴圈中,可以使用當前鍵來訪問與之相關聯的值:

#可以使用當前鍵來訪問與之相關聯的值
#列印兩條訊息指出朋友喜歡的語言
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()確定某個人是否接受了調查
favorite_languages = {
 'jen': 'python',
 'sarah': 'c',
 'edward': 'ruby',
 'phil': 'python',
 }
if 'erin' not in favorite_languages.keys():
	print("Erin, please take our poll!")

6.3.3 按順序遍歷字典中的所有值 要以特定的順序返回元素,一種辦法是在for迴圈中對返回的鍵進行排序,用函式sorted()來獲得按特定順序排列的鍵列表的副本:

favorite_languages = {
 'jen': 'python',
 'sarah': 'c',
 'edward': 'ruby',
 'phil': 'python',
 }
for name in sorted(favorite_languages.key()):
	print(name.title() + ", thank you for taking the poll.")

6.3.4 遍歷字典中的所有值 如果你感興趣的字典包含的值,可以使用方法values(),它返回一個值列表,但是不包含任何鍵。

favorite_languages = {
     'jen': 'python',
     'sarah': 'c',
     'edward': 'ruby',
     'phil': 'python',
     }
print("The folloing languages have been mentioned:")
for language in favorite_languages..values():
	print(language.title())

這樣的做法提取字典中所有的值,但是沒有考慮是否重複。可以使用集合(set),集合類似於列表,但是每一個元素都必須是獨一無二的。

favorite_languages = {
     'jen': 'python',
     'sarah': 'c',
     'edward': 'ruby',
     'phil': 'python',
}
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
	print(language.title())

通過對包含重複元素的列表呼叫set(),可讓Python找出列表中獨一無二的元素,並使用這些元素來建立一個集合。