# wk06_1012_迴圈 <pre> 4.2 for 迴圈 2. break 命令 3. continue 命令 4.3 while 迴圈 <pre/> ### {範例} 6. 最小公倍數 <multiple> 7. 顯示正整數數列,排除5的倍數 <except5> 8. while迴圈計算階乘 <while> ## 【inclass practice】 ```python n = int(input("enter n = ")) #n = 10 for i in range(1, n+1) : if i % 5 == 0 : continue #在廻圈執行中途暫時停住,跳回廻圈的起始處執行 print(i) ``` enter n = 10 1 2 3 4 6 7 8 9 ```python # n = int(input("enter n")) n = 100 for i in range(1, n+1) : if i == 9 : break #在廻圈執行中強迫跳離廻圈,跳到廻圈後面的程式繼續執行 print(i) ``` 1 2 3 4 5 6 7 8 ```python a = 10 b = 70 maxno = a * b #最大的最小公倍數是互乘 for i in range(1,maxno+1) : #最小公倍數的範圍為1 ~ a*b if i % a == 0 and i % b == 0 : #若此數可被a、b同時整除就停止 break print(a, b ,i) ``` 10 70 70 實作5 <pre> 一個正整數除了1和自己外,無法再被其他數整除,這個數就是質數。 請輸入一正整數,列出此數的所有正因數,並判斷使數字是否為質數 <pre/> ```python n = 157 #某數 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,"個因數") ``` 157 是 質數 有 2 個因數 ```python num = 6 ans = 1 n = 0 while n < num : n = n + 1 ans = ans * n print(num,"! = ", ans) #1*2*3*4*5*6 ``` 6 ! = 720 ### {補充 while 練習} 1. 猜數字遊戲:寫一個程式,隨機選擇一個1到100的數字,然後要求玩家通過輸入猜測該數字,直到猜對為止。使用while迴圈來實現,並在玩家猜對時結束遊戲。 ```python #import random #生成隨機數字 #target_number = random.randint(1, 100) target_number = 26 guess = 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的數字:96 太高了!再猜一次。 請猜一個1到100的數字:45 太低了!再猜一次。 請猜一個1到100的數字:82 太高了!再猜一次。 請猜一個1到100的數字:86 太高了!再猜一次。 請猜一個1到100的數字:74 太高了!再猜一次。 請猜一個1到100的數字:55 太高了!再猜一次。 請猜一個1到100的數字:50 太低了!再猜一次。 請猜一個1到100的數字:52 太低了!再猜一次。 請猜一個1到100的數字:53 恭喜!你猜對了,答案是53。你總共猜了9次。 ```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的數字:8 太低了!再猜一次。 請猜一個1到10的數字:9 恭喜!你猜對了,答案是9。 4. 累積加法:寫一個程式,要求使用者不斷輸入整數,並使用while迴圈計算這些整數的總和。當使用者輸入0時,停止接受輸入並印出總和。 ```python total = 0 while True: #後面加True指無限的while迴圈 num = int(input("請輸入一個整數(輸入0結束):")) if num == 0: break total += num print(f"總和:{total}") ``` 請輸入一個整數(輸入0結束):82 請輸入一個整數(輸入0結束):79 請輸入一個整數(輸入0結束):86 請輸入一個整數(輸入0結束):100 請輸入一個整數(輸入0結束):99 請輸入一個整數(輸入0結束):0 總和:446 3. 倒數計時器:寫一個程式,請求使用者輸入一個正整數作為倒數計時的秒數,然後使用while迴圈從輸入的秒數倒數到0。在每個秒數的間隔打印出剩餘的秒數。 ```python import time countdown = int(input("請輸入倒數的秒數:")) while countdown > 0: print(countdown) time.sleep(1) countdown -= 1 ``` 請輸入倒數的秒數:8 8 7 6 5 4 3 2 1 2. 使用者輸入:寫一個程式,要求使用者輸入一個整數,然後使用while迴圈,只有當輸入的數字是正整數時,才停止請求輸入。如果輸入不是正整數,則繼續要求輸入,直到收到正確的輸入。 ```python user_input = None while not user_input: user_input = input("請輸入一個正整數:") if user_input.isdigit(): user_input = int(user_input) else: user_input = None print("請輸入正確的整數。") print(f"您輸入了正整數:{user_input}") ``` 請輸入一個正整數:-9 請輸入正確的整數。 請輸入一個正整數:0 請輸入一個正整數:1 您輸入了正整數:1 ## 【afterclass practice】 1. 複習ch03、ch04 2. 教學影音 lesson 7、9