if 語句 原

## if語句 # 5.1 一個簡單示例 cars =['audi','bmw','subaru','toyota'] for car in cars: if car=='bmw': print(car.upper()) #演示瞭如何使用if 語句來正確地處理特殊情形。假設你有一個汽車列表,並想將其中每輛汽車的名稱打印出來。對於大多數汽車,都應以首字母大寫的 else: # 方式打印其名稱,但對於汽車名'bmw' ,應以全大寫的方式打印。下面的代碼遍歷一個列表,並以首字母大寫的方式打印其中的汽車名,但對於汽車名'bmw' ,以全大寫的方 print(car.title()) # 式打印 # 5.2 條件測試 ## 每條if 語句的核心都是一個值爲True 或False 的表達式,這種表達式被稱爲條件測試 。Python根據條件測試的值爲True 還是False 來決定是否執行if 語句中的代碼。如果 ## 條件測試的值爲True ,Python就執行緊跟在if 語句後面的代碼;如果爲False ,Python就忽略這些代碼。 # 5.2.1 檢查是否相等 # 大多數條件測試都將一個變量的當前值同特定值進行比較。最簡單的條件測試檢查變量的值是否與特定值相等: car = 'bmw' # 首先使用一個等號將car 的值設置爲'bmw' car == 'bmw' # 使用兩個等號(== )檢查car 的值是否爲'bmw' # 5.2.2 檢查是否相等時不考慮大小寫 car = 'Audi' car == 'audi' # Python中檢查是否相等時區分大小寫,例如,兩個大小寫不同的值會被視爲不相等: car = 'Audi' car.lower() == 'audi' # 函數lower() 不會修改存儲在變量car 中的值,將變量的值轉換爲小寫,再進行比較 # 5.2.3 檢查是否不相等 requested_topping = 'mushrooms' if requested_topping != 'anchovies': # 將requested_topping 的值與'anchovies' 進行比較,如果它們不相等,Python將返回True ,進而執行緊跟在if 語句後面的代碼;如果這兩個值相 print("Hold the anchovies!") # 等,Python將返回False ,因此不執行緊跟在if 語句後面的代碼。 # 5.2.4 比較數字 age = 18 age == 18 # 檢查一個人是否是18歲 # 條件語句中可包含各種數學比較,如小於、小於等於、大於、大於等於: age = 19 age < 21 True age <= 21 True age > 21 False age >= 21 False # 5.2.5 檢查多個條件 # 你可能想同時檢查多個條件,例如,有時候你需要在兩個條件都爲True 時才執行相應的操作,而有時候你只要求一個條件爲True 時就執行相應的操作。在這些情況下,關鍵 # 字and 和or 可助你一臂之力。 # 1 and age_0 =22 age_1=18 age_0 >=21 and age_1>=21 age1 =22 age_0 >=21 and age1>=21 # 2 or # 關鍵字or 也能夠讓你檢查多個條件,但只要至少有一個條件滿足,就能通過整個測試。僅當兩個測試都沒有通過時,使用or 的表達式才爲False 。 age_0 =22 age_1 =18 age_0 >= 21 or age_1 >=21 # 5.2.6 檢查特定值是否包含在列表中 # 有時候,執行操作前必須檢查列表是否包含特定的值。例如,結束用戶的註冊過程前,可能需要檢查他提供的用戶名是否已包含在用戶名列表中。在地圖程序中,可能需要檢查 # 用戶提交的位置是否包含在已知位置列表中。 # 要判斷特定的值是否已包含在列表中,可使用關鍵字in 。來看你可能爲比薩店編寫的一些代碼;這些代碼首先創建一個列表,其中包含用戶點的比薩配料,然後檢查特定的配料 # 是否包含在該列表中。 >>> requested_toppings = ['mushrooms', 'onions', 'pineapple'] ❶ >>> 'mushrooms' in requested_toppings # 讓Python檢查列表requested_toppings 是否包含'mushrooms' 和'pepperoni' True ❷ >>> 'pepperoni' in requested_toppings False # 5.2.7 檢查特定值是否不包含在列表中 # 還有些時候,確定特定的值未包含在列表中很重要;在這種情況下,可使用關鍵字not in 。例如,如果有一個列表,其中包含被禁止在論壇上發表評論的用戶,就可在允許用 # 戶提交評論前檢查他是否被禁言: banned_users = ['andrew', 'carolina', 'david'] user = 'marie' ❶ if user not in banned_users: print(user.title() + ", you can post a response if you wish.") # 5.2.8 布爾表達式 # 隨着你對編程的瞭解越來越深入,將遇到術語布爾表達式 ,它不過是條件測試的別名。與條件表達式一樣,布爾表達式的結果要麼爲True ,要麼爲False # 5.3 if語句 # 最簡單的if 語句只有一個測試和一個操作: age =19 if age >=18: print('you are old enough to vote!') # 在if 語句中,縮進的作用與for 循環中相同。如果測試通過了,將執行if 語句後面所有縮進的代碼行,否則將忽略它們。 # if -else 語句 # 經常需要在條件測試通過了時執行一個操作,並在沒有通過時執行另一個操作;在這種情況下,可使用Python提供的if-else 語句。if-else 語句塊類似於簡單的if 語句,但 # 其中的else 語句讓你能夠指定條件測試未通過時要執行的操作。 age =17 if age >=18: print('you are old enough to vote!') # 如果❶處的條件測試通過了,就執行第一個縮進的print 語句塊;如果測試結果爲False ,就執行❷處的else 代碼塊。這次age 小於18,條件測試未通過,因此執行else 代 else: # 碼塊中的代碼: print("sorry,you are too young to vote") # 5.3.3 if-eilf-else結構 # 經常需要檢查超過兩個的情形,爲此可使用Python提供的if-elif-else 結構。Python只執行if-elif-else 結構中的一個代碼塊,它依次檢查每個條件測試,直到遇到通過 # 了的條件測試。測試通過後,Python將執行緊跟在它後面的代碼,並跳過餘下的測試。 age =4 if age <=4: print('不收費') elif age <=18: print("收費5元") else: print('收費10元') # 代碼簡潔 age =77 if age <=4: price=0 elif age <=18: price=5 else: price=10 print("收費"+str(price)+'元') # 5.3.4 使用多個elif代碼塊 # 可根據需要使用任意數量的elif 代碼塊,例如,假設前述遊樂場要給老年人打折,可再添加一個條件測試,判斷顧客是否符合打折條件。下面假設對於65歲(含)以上的老 # 人,可以半價(即5美元)購買門票: age =77 if age <=4: price=0 elif age <=18: price=5 elif age>65: price =5 else: price=10 print("收費"+str(price)+'元') # 這些代碼大都未變。第二個elif 代碼塊(見❶)通過檢查確定年齡不到65歲後,纔將門票價格設置爲全票價格——10美元。請注意,在else 代碼塊(見❷)中,必須將所賦的 # 值改爲5,因爲僅當年齡超過65(含)時,纔會執行這個代碼塊。 # 5.3.5 省略else代碼塊 # Python並不要求if-elif 結構後面必須有else 代碼塊。在有些情況下,else 代碼塊很有用;而在其他一些情況下,使用一條elif 語句來處理特定的情形更清晰: age =19 if age <=4: price=0 elif age <=18: price=5 elif age>=65: price =5 elif age<65: price = 10 print("收費"+str(price)+'元') # else 是一條包羅萬象的語句,只要不滿足任何if 或elif 中的條件測試,其中的代碼就會執行,這可能會引入無效甚至惡意的數據。如果知道最終要測試的條件,應考慮使用 # 一個elif 代碼塊來代替else 代碼塊。這樣,你就可以肯定,僅當滿足相應的條件時,你的代碼纔會執行。 # 5.3.6 測試多個條件 # if-elif-else 結構功能強大,但僅適合用於只有一個條件滿足的情況:遇到通過了的測試後,Python就跳過餘下的測試。這種行爲很好,效率很高,讓你能夠測試一個特定的 # 條件。 # 然而,有時候必須檢查你關心的所有條件。在這種情況下,應使用一系列不包含elif 和else 代碼塊的簡單if 語句。在可能有多個條件爲True ,且你需要在每個條件爲True # 時都採取相應措施時,適合使用這種方法。 # 下面再來看前面的比薩店示例。如果顧客點了兩種配料,就需要確保在其比薩中包含這些配料: 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!") # 如果像下面這樣轉而使用if-elif-else 結構,代碼將不能正確地運行,因爲有一個測試通過後,就會跳過餘下的測試: requested_toppings = ['mushrooms', 'extra cheese'] if 'mushrooms' in requested_toppings: print("Adding mushrooms.") elif 'pepperoni' in requested_toppings: print("Adding pepperoni.") elif 'extra cheese' in requested_toppings: print("Adding extra cheese.") print("\nFinished making your pizza!") # 第一個測試檢查列表中是否包含'mushrooms' ,它通過了,因此將在比薩中添加蘑菇。然而,Python將跳過if-elif-else 結構中餘下的測試,不再檢查列表中是否包 # 含'extra cheese' 和'pepperoni' 。其結果是,將添加顧客點的第一種配料,但不會添加其他的配料: # 總之,如果你只想執行一個代碼塊,就使用if-elif-else 結構;如果要運行多個代碼塊,就使用一系列獨立的if 語句。 # 5.4使用if語句處理列表 # 通過結合使用if 語句和列表,可完成一些有趣的任務:對列表中特定的值做特殊處理;高效地管理不斷變化的情形,如餐館是否還有特定的食材;證明代碼在各種情形下都將按 # 預期那樣運行。 # 5.4.1 檢查特殊元素 requested_toppings=['mushrooms','green peppers','extra cheese'] for requested_topping in requested_toppings: if requested_topping=='green peppers': # 這裏在比薩中添加每種配料前都進行檢查。❶處的代碼檢查顧客點的是否是青椒,如果是,就顯示一條消息,指出不能點青椒的原因。❷處的else 代碼塊確保其他配料都將添 print('sorry') # 加到比薩中。 else: print(requested_topping) # 5.4.2 確定列表不是空的 # 對於處理的每個列表都做了一個簡單的假設,即假設它們都至少包含一個元素。我們馬上就要讓用戶來提供存儲在列表中的信息,因此不能再假設循環運行時列表 # 不是空的。有鑑於此,在運行for 循環前確定列表是否爲空很重要。 requested_toppings =[] if requested_toppings: # 在❷處我們進行了簡單檢查,而不是直接執行for 循環。在if 語句中將列表名用在條件表達式中 print('sorry') # 時,Python將在列表至少包含一個元素時返回True ,並在列表爲空時返回False 。如果requested_toppings 不爲空,就運行與前一個示例相同的for 循環; else: print('pizza') # 5.4.3 使用多個列表 available_toppongs=['mushrooms','olives','green peppers','pepperoni','pineapple','extra cheese'] # 我們定義了一個列表,其中包含比薩店供應的配料 requested_toppings=['mushrooms','green peppers','extra cheese'] #創建了一個列表,其中包含顧客點的配料,請注意那個不同尋常的配料——'french fries' for requested_topping in requested_toppings: # 我們遍歷顧客點的配料列表。在這個循環中,對於顧客點的每種配料,我們都檢查它是否包 if requested_topping in available_toppongs: #含在供應的配料列表中(見❹) print('adding '+requested_topping) # 如果答案是肯定的,就將其加入到比薩中,否則將運行else 代碼塊(見❺):打印一條消息,告訴顧客不供應這種配料。 else: print('sorry')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章