---
# System prepended metadata

title: wk06_1012_迴圈

---

# 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
