5-1 條件測試 :編寫一系列條件測試;將每個測試以及你對其結果的預測和實際結果都列印出來。你編寫的程式碼應類似於下面這樣:
car = 'subaru'
print("Is car == 'subaru'? I predict True.")
print(car == 'subaru')
print("\nIs car == 'audi'? I predict False.")
print(car == 'audi')
- 詳細研究實際結果,直到你明白了它為何為True 或False 。
- 建立至少10個測試,且其中結果分別為True 和False 的測試都至少有5個。
number = 18
print("Is number == 18? I predict True")
print(number == 18)
number = 18
print("\nIs number == 19? I predict False")
print(number == 19)
fruit = 'orange'
print("\nIs fruit =='banana'? I predice False")
print(fruit == 'banana')
fruit = 'orange'
print("\nIs fruit =='orange'? I predice True")
print(fruit == 'orange')
5-2 更多的條件測試 :你並非只能建立10個測試。如果你想嘗試做更多的比較,可再編寫一些測試,並將它們加入到conditional_tests.py中。對於下面列出的各種測試,至少編寫一個結果為True 和False 的測試。
- 檢查兩個字串相等和不等。
- 使用函式lower() 的測試。
- 檢查兩個數字相等、不等、大於、小於、大於等於和小於等於。
- 使用關鍵字and 和or 的測試。
- 測試特定的值是否包含在列表中。
- 測試特定的值是否未包含在列表中。
fruit1 = 'orange'
fruit2 = 'Orange'
if fruit1 == fruit2:
print('不相等列印不出來')
if fruit1 == fruit2.lower():
print("相等可以打出來")
if fruit1 != fruit2:
print('不相等可以打出來')
if fruit2 == 'orange' or fruit2.lower() == 'orange':
print('只要一個是真,可以打出來')
if fruit2 == 'orange' and fruit2.lower() == 'orange':
print('這行打不出來')
number1 = 18
number2 = 20
if number1 == number2:
print(str(number1)+' 等於 '+str(number2))
elif number1 != number2:
print(str(number1)+' 不等於 '+str(number2))
if number1 > number2:
print(str(number1)+' 大於 '+str(number2))
elif number1 < number2:
print(str(number1)+' 小於 '+str(number2))
if number1 >= number2:
print(str(number1)+' 大於等於 '+str(number2))
if number1 <= number2:
print(str(number1)+' 小於等於 '+str(number2))
fruit3 = 'Banana'
fruits = ['orange','banana','apple']
if fruit3 not in fruits:
print(fruit1+' 【fruit1】不在列表中')
if fruit3.lower() in fruits:
print(fruit2.lower() +'【fruit2】 在列表中')
5-3 外星人顏色#1 :假設在遊戲中剛射殺了一個外星人,請建立一個名為alien_color 的變數,並將其設定為'green' 、'yellow' 或'red' 。
- 編寫一條if 語句,檢查外星人是否是綠色的;如果是,就列印一條訊息,指出玩家獲得了5個點。
- 編寫這個程式的兩個版本,在一個版本中上述測試透過了,而在另一個版本中未透過(未透過測試時沒有輸出)。
alien_color = 'green'
if alien_color == 'green':
print('恭喜玩家獲得5點積分')
if alien_color == 'red':
print('')
5-4 外星人顏色#2 :像練習5-3那樣設定外星人的顏色,並編寫一個if-else 結構。
- 如果外星人是綠色的,就列印一條訊息,指出玩家因射殺該外星人獲得了5個點。
- 如果外星人不是綠色的,就列印一條訊息,指出玩家獲得了10個點。
- 編寫這個程式的兩個版本,在一個版本中執行if 程式碼塊,而在另一個版本中執行else 程式碼塊。
alien_color = 'green'
if alien_color =='green':
print('擊殺怪物獲得5點積分')
else:
print('恭喜玩家獲得10點積分')
if alien_color == 'green':
print('擊殺怪物獲得5點積分')
if alien_color != 'green':
print('恭喜玩家獲得10點積分')
5-5 外星人顏色#3 :將練習5-4中的if-else 結構改為if-elif-else 結構。
- 如果外星人是綠色的,就列印一條訊息,指出玩家獲得了5個點。
- 如果外星人是黃色的,就列印一條訊息,指出玩家獲得了10個點。
- 如果外星人是紅色的,就列印一條訊息,指出玩家獲得了15個點。
- 編寫這個程式的三個版本,它們分別在外星人為綠色、黃色和紅色時列印一條訊息。
alien_color = 'green'
if alien_color == 'green':
print('恭喜玩家獲得5積分')
elif alien_color == 'yellow':
print('恭喜玩家獲得10積分')
elif alien_color == 'red':
print('恭喜玩家獲得15積分')
5-6 人生的不同階段 :設定變數age 的值,再編寫一個if-elif-else 結構,根據age 的值判斷處於人生的哪個階段。
- 如果一個人的年齡小於2歲,就列印一條訊息,指出他是嬰兒。
- 如果一個人的年齡為2(含)~4歲,就列印一條訊息,指出他正蹣跚學步。
- 如果一個人的年齡為4(含)~13歲,就列印一條訊息,指出他是兒童。
- 如果一個人的年齡為13(含)~20歲,就列印一條訊息,指出他是青少年。
- 如果一個人的年齡為20(含)~65歲,就列印一條訊息,指出他是成年人。
- 如果一個人的年齡超過65(含)歲,就列印一條訊息,指出他是老年人。
age = 18
if age < 2:
print('還是嬰兒哦')
elif age >= 2 and age < 4:
print('正在蹣跚學步呢')
elif age >= 4 and age < 13:
print('現在是兒童了')
elif age >= 13 and age < 20:
print('長大成青少年了')
elif age >= 20 and age < 65:
print('已經是成年人了')
elif age >= 65:
print('時間太快了,已經是老年人了')
5-7 喜歡的水果 :建立一個列表,其中包含你喜歡的水果,再編寫一系列獨立的if 語句,檢查列表中是否包含特定的水果。將該列表命名為favorite_fruits ,並在其中包含三種水果。編寫5條if 語句,每條都檢查某種水果是否包含在列表中,如果包含在列表中,就列印一條訊息,如“You really like bananas!”。
favorite_fruits = ['香蕉','橘子','梨子']
if '蘋果' in favorite_fruits:
print('你真的喜歡蘋果')
if '香蕉' in favorite_fruits:
print('你真的喜歡香蕉')
if '哈密瓜' in favorite_fruits:
print('你真的喜歡哈密瓜')
if '梨子' in favorite_fruits:
print('你真的喜歡梨子')
if '橘子' in favorite_fruits:
print('你真的喜歡橘子')
5-8 以特殊方式跟管理員打招呼 :建立一個至少包含5個使用者名稱的列表,且其中一個使用者名稱為'admin' 。想象你要編寫程式碼,在每位使用者登入網站後都列印一條問候訊息。遍歷使用者名稱列表,並向每位使用者列印一條問候訊息。如果使用者名稱為'admin' ,就列印一條特殊的問候訊息,如“Hello admin, would you like to see a status report?”。否則,列印一條普通的問候訊息,如“Hello Eric, thank you for logging in again”。
users = ['andmin','other','wayne','jhon','JHon']
for user in users:
if user == 'admin':
print('Hello admin, would you like to see a status report?')
else:
print('Hello '+user+', thank you for logging in again')
5-9 處理沒有使用者的情形 :在為完成練習5-8編寫的程式中,新增一條if 語句,檢查使用者名稱列表是否為空。如果為空,就列印訊息“We need to find some users!”。刪除列表中的所有使用者名稱,確定將列印正確的訊息。
users = ['andmin','other','wayne','jhon','JHon']
if len(users) == 0 :
print('We need to find some users!')
else:
for user in users:
print('Hello '+user+', thank you for logging in again')
del users[:]
print(users)
5-10 檢查使用者名稱 :按下面的說明編寫一個程式,模擬網站確保每位使用者的使用者名稱都獨一無二的方式。建立一個至少包含5個使用者名稱的列表,並將其命名為current_users 。再建立一個包含5個使用者名稱的列表,將其命名為new_users ,並確保其中有一兩個使用者名稱也包含在列表current_users 中。遍歷列表new_users ,對於其中的每個使用者名稱,都檢查它是否已被使用。如果是這樣,就列印一條訊息,指出需要輸入別的使用者名稱;否則,列印一條訊息,指出這個使用者名稱未被使用。確保比較時不區分大訊息;換句話說,如果使用者名稱'John' 已被使用,應拒絕使用者名稱'JOHN' 。
current_users = ['andmin','other','wayne','jhon','jian']
new_users = ['Mary','Bob','Delia','wayne','jhon']
for user in new_users:
if user.lower() in [current_user.lower() for current_user in current_users]:
print(user + '使用者名稱被佔用,不允許使用')
else:
print(user + '改使用者名稱可以使用')
5-11 序數 :序數表示位置,如1st和2nd。大多數序數都以th結尾,只有1、2和3例外。在一個列表中儲存數字1~9。遍歷這個列表。在迴圈中使用一個if-elif-else 結構,以列印每個數字對應的序數。輸出內容應為1st 、2nd 、3rd 、4th 、5th 、6th 、7th 、8th 和9th ,但每個序數都獨佔一行。
numbers = list(range(1,10))
for number in numbers:
if number == 1 :
print(str(number)+'st')
elif number == 2 :
print(str(number)+'nd')
elif number == 3 :
print(str(number)+'rd')
else:
print(str(number)+'th')
5-12 設定if 語句的格式 :稽核你在本章編寫的程式,確保正確地設定了條件測試的格式。
學習就是要重複重複再重複的練習
5-13 自己的想法 :與剛拿起本書時相比,現在你是一名能力更強的程式設計師了。鑑於你對如何在程式中模擬現實情形有了更深入的認識,你可以考慮使用程式來解決一些問題。隨著程式設計技能不斷提高,你可能想解決一些問題,請將這方面的想法記錄下來。想想你可能想編寫的遊戲、想研究的資料集以及想建立的Web應用程式。
之前自學過一下基礎,很久沒碰了,重新學習下,再往深層次學習