# wk06_1012_loop while break continue _陳姿頴 ## 課程目標 1. break 命令 - 加入if判斷,跳出for loop且不用繼續執行 2. continue 命令 - 加入if判斷,排除特定值後並繼續執行 3. while 迴圈 ## [inclass practice] ```python #去除5的倍數 n = int(input("enter n ")) for i in range (1, n+1): if i % 5 == 0: continue print(i) ``` enter n 1 1 ```python #遇到9就停止 n = int(input("enter n ")) for i in range (1, n+1): if i == 9: break print(i) ``` enter n 1 1 ```python #最小公倍數(i) a = int(input("enter a ")) b = int(input("enter b ")) maxno = a * b for i in range(1, maxno + 1 ): if i % a == 0 and i % b == 0: break print(a, b, i) ``` enter a 1 enter b 1 1 1 1 ```python #求任意數的階層 num = int(input("enter a number")) ans = 1 n = 0 while n < num: n = n + 1 ans = ans * n print(num,"! =", ans) ``` enter a number8 8 ! = 40320 實作5: 一個正整數除了1和自己外,無法再被其他數整除,這個數就是質數。 請輸入一正整數,列出此數的所有正因數,並判斷使數字是否為質數 ```python n = int(input("enter n ")) p = 1 counter = 0 while p <= n: if n % p ==0: counter = counter + 1 p = p + 1 if counter > 2: ans = "合數" else: ans = "質數" print(n,ans,"有",counter,"因數") ``` enter n 157 157 質數 有 2 因數 ### {補充 while 練習} 1. 猜數字遊戲:寫一個程式,隨機選擇一個1到100的數字,然後要求玩家通過輸入猜測該數字,直到猜對為止。使用while迴圈來實現,並在玩家猜對時結束遊戲。 ```python #import random # 生成隨機數字 #target_number = random.randint(1, 100) target_number = 26 guess = None #None做比較運算不會有問題 attempts = 0 while guess != target_number: guess = int(input("請猜一個1到100的數字:")) attempts += 1 if guess < target_number: print("太低了!再猜一次。") elif guess > target_number: print("太高了!再猜一次。") print(f"恭喜!你猜對了,答案是{target_number}。你總共猜了{attempts}次。") ``` 請猜一個1到100的數字:26 恭喜!你猜對了,答案是26。你總共猜了1次。 2. 使用者輸入:寫一個程式,要求使用者輸入一個整數,然後使用while迴圈,只有當輸入的數字是正整數時,才停止請求輸入。如果輸入不是正整數,則繼續要求輸入,直到收到正確的輸入。 ```python user_input = None while not user_input: user_input = input("請輸入一個正整數:") if user_input.isdigit(): #isdigit:檢查屬性是否正確 user_input = int(user_input) else: user_input = None print("請輸入正確的整數。") print(f"您輸入了正整數:{user_input}") ``` 3. 倒數計時器:寫一個程式,請求使用者輸入一個正整數作為倒數計時的秒數,然後使用while迴圈從輸入的秒數倒數到0。在每個秒數的間隔打印出剩餘的秒數。 ```python import time countdown = int(input("請輸入倒數的秒數:")) while countdown > 0: print(countdown) time.sleep(1) countdown -= 1 print("時間到!") ``` 請輸入倒數的秒數:5 5 4 3 2 1 時間到! 4. 累積加法:寫一個程式,要求使用者不斷輸入整數,並使用while迴圈計算這些整數的總和。當使用者輸入0時,停止接受輸入並印出總和。 ```python total = 0 while True: #True:判斷之後的結果 num = int(input("請輸入一個整數(輸入0結束):")) if num == 0: break #結束 total += num print(f"總和:{total}") ``` 請輸入一個整數(輸入0結束):12 請輸入一個整數(輸入0結束):0 總和:12 5. 數字猜謎:寫一個程式,在1到10之間選擇一個隨機數字,然後要求玩家通過輸入猜測該數字。使用while迴圈來實現,並提供猜測是太高還是太低的提示,直到猜對為止。 ```python import random # 生成隨機數字 target_number = random.randint(1, 10) guess = None while guess != target_number: guess = int(input("請猜一個1到10的數字:")) if guess < target_number: print("太低了!再猜一次。") elif guess > target_number: print("太高了!再猜一次。") print(f"恭喜!你猜對了,答案是{target_number}。") ``` 請猜一個1到10的數字:10 太高了!再猜一次。 請猜一個1到10的數字:5 太高了!再猜一次。 請猜一個1到10的數字:2 恭喜!你猜對了,答案是2。 ## [afterclass practice] 1. 複習ch03、ch04 2. 教學影音 lesson 7、9 ## [selfpractice] <pre> 定義: 1. None: - 為特殊空值,可將None賦值給任何變量 - 數據類型:NoneType - 不等於空字符串、空列表、0 2. NULL: - 一種類型 - 沒有存儲值 3. NaN: - Not A Number - 缺失值(甚麼值都沒有) <pre/>