for 迴圈&while迴圈練習 (各一題)
(迴圈說明在最下面(給自己看))
for 迴圈練習題
# 依序印出使用者輸入的一段文字:每個字元一行
# 略過空格,不顯示空格字元 (continue)
# 如果遇到「句點 .」,就停止印出 (break)
# 最後顯示「共處理了 N 個字元」,不包含被跳過或中斷後的
sentence = input('請用英文輸入「我是Lute。很高興認識你。」:')
count = 0
for x in sentence: # 遍歷(iterate) 字串中的每一個對象
if x == ' ':
continue # 遇到空格跳過
elif x == '.':
break # 遇到 '.' 中斷
else:
print(x)
count += 1
print(f'共處理了 {count} 個字元。')
使用 while True 建立迴圈,讓使用者可以重新輸入直到輸入正確為止
# 使用者需要輸入
# (1)暱稱(nickname):不可超過10個字元、不可包含空格、第一個字母必須是大寫。# (2)Email:必須包含 @、@ 後的網域不可包含空格。
# (1)nickname
nickname_is_valid = False
while not nickname_is_valid:
nickname = input('請輸入您的暱稱,暱稱請勿超過10字元、不可含空格、第一個字母必須大寫:')
if ' ' in nickname:
print('抱歉,暱稱不可含空格。') # 不可以空格
elif len(nickname) > 10:
print(f'抱歉,暱稱不可超過10字元。') # 不超過10字元
elif not nickname[0].isupper():
print(f'抱歉,暱稱第一個字母必須大寫。')
else:
print(f'您的暱稱是:{nickname}')
nickname_is_valid = True
# (2)Email:必須包含 @、@ 後的網域不可包含空格。
email_is_valid = False
while not email_is_valid:
email = input('請輸入email address:')
if '@' not in email:
print(f'抱歉,必須包含 @。')
else:
index = email.index('@')
domain = email[index + 1:]
if ' ' in domain:
print('抱歉,email 網域(@之後)不能包含空格。')
else:
print(f'您的 email address 是:{email}')
email_is_valid = True
--
Python的主要兩種迴圈:
- for 迴圈 (for loop):
- 適用場景: 當你需要遍歷一個已知的序列 (Sequence) 或可迭代對象 (Iterable) 中的每一個元素時(例如字串、列表、元組、集合、字典,或者 range() 函數生成的數字序列)。
- 白話:「針對『每一』個東西,都做一次。」
- 特點: 通常在執行前就知道要執行多少次,或者知道要遍歷多少個元素。
- while 迴圈 (while loop):
- 適用場景: 當你需要根據一個條件來重複執行一段程式碼,直到這個條件不再滿足為止。你不確定具體會重複多少次。
- 白話:「只要這個條件成立,就一直做!」
- 特點: 必須確保迴圈內部有改變條件的機制,否則會造成無限迴圈。
這兩種迴圈涵蓋了絕大多數的重複執行需求。