# 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/>