# 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