---
# System prepended metadata

title: wk06_1012 迴圈
tags: [python]

---

{%hackmd @themes/orangeheart %}
## wk06_1012_迴圈 
### 醫放三 B1003210 應雨岑

1. break 命令
2. continue 命令
3. while



## [ INCLASS PRACTICE ]


## 今日課程內容
<pre>
4.2  for 迴圈
    -break 命令
    -continue 命令
4.3 while 迴圈
</pre>
## NOTE
<pre>
break會跳出這個迴圈
continue跳出執行這個code 繼續執行下一個i的程式
None 為一個什麼都沒有的數字，但是他可以做加減乘除的運算
</pre>


```python
#使用者輸入一個數字，但不要印出5的倍數

n=int(input("請輸入一個數字"))
for i in range(1,n+1):
    if(i%5!=0):
        print(i)
#另解:使用continue
for i in range(1,n+1):
    if i%5==0:
        continue
    print(i)
```

    請輸入一個數字8
    1
    2
    3
    4
    6
    7
    8
    1
    2
    3
    4
    6
    7
    8
    


```python
#遇到9就停
n=int(input("請輸入一數字"))
for i in range(1,n+1):
    if i==9:
        break
    print(i)
```

    請輸入一數字68
    1
    2
    3
    4
    5
    6
    7
    8
    


```python
#最小公倍數
a=int(input("請輸入第一個數字"))
b=int(input("請輸入第二個數字"))
max=a*b
for i in range(1,max+1):
    if i%a==0 and i%b==0:
        break
print("[%d,%d]=%d"%(a,b,i))
```

    請輸入第一個數字6
    請輸入第二個數字48
    [6,48]=48
    


```python
#階層
n=int(input("請輸入數字"))
ans=1
i=1
while (i<=n):
    ans=ans*i
    # print(i)    #測試是否有錯誤
    i+=1
print(n,"! =",ans)
```

    請輸入數字8
    8 ! = 40320
    


```python
num= 6
ans=1
n=0
while n<num:
    print(n)
    n=n+1
    ans=ans*n
print(num,"!=",ans)
```

    0
    1
    2
    3
    4
    5
    6 != 720
    


```python
"""
實作5:

一個正整數除了1和自己外，無法再被其他數整除，這個數就是質數。
請輸入一正整數，列出此數的所有正因數，並判斷使數字是否為質數
"""
aa=int(input("請輸入一正整數"))
count=0

print("因數有\n1")
for i in range(2,aa):
    if aa%i!=0:  #不整除
        count+=0
    else:
        count+=1
        print(i)
if count==0:
    print(aa,"\n因為除了1和自己外，無法再被其他數整除，所以是質數")
else:
    print(aa,"\n不是質數")
        
```

    請輸入一正整數50
    因數有
    1
    2
    5
    10
    25
    50 
    不是質數
    


```python
n=15
p=1
counter=0
while(p<=n):
    if n%p==0:   #有因數
        counter+=1
    p+=1
    
if counter>2:
    print("合數")
else:
    print("質數")
    
print("其中有%d個因數"%(counter))    
        
```

    合數
    其中有4個因數
    


```python
"""
猜數字遊戲：
寫一個程式，隨機選擇一個1到100的數字，然後要求玩家通過輸入猜測該數字，直到猜對為止。使用while迴圈來實現，並在玩家猜對時結束遊戲。
"""
import random

# 生成隨機數字
target_number = random.randint(1, 100)

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的數字：54
    太高了！再猜一次。
    請猜一個1到100的數字：24
    太高了！再猜一次。
    請猜一個1到100的數字：2
    恭喜！你猜對了，答案是2。你總共猜了3次。
    


```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的數字：54
    太高了！再猜一次。
    請猜一個1到100的數字：21
    太低了！再猜一次。
    請猜一個1到100的數字：34
    太低了！再猜一次。
    請猜一個1到100的數字：39
    太低了！再猜一次。
    請猜一個1到100的數字：48
    恭喜！你猜對了，答案是48。
    


```python
"""累積加法：寫一個程式，要求使用者不斷輸入整數，並使用while迴圈計算這些整數的總和。當使用者輸入0時，停止接受輸入並印出總和。"""
total = 0

while True:
    num = int(input("請輸入一個整數（輸入0結束）："))
    if num == 0:
        break
    total += num

print(f"總和：{total}")
```

    請輸入一個整數（輸入0結束）：5
    請輸入一個整數（輸入0結束）：4
    請輸入一個整數（輸入0結束）：7
    請輸入一個整數（輸入0結束）：6
    請輸入一個整數（輸入0結束）：0
    總和：22
    


```python
"""倒數計時器：寫一個程式，請求使用者輸入一個正整數作為倒數計時的秒數，然後使用while迴圈從輸入的秒數倒數到0。在每個秒數的間隔打印出剩餘的秒數。"""
import time

countdown = int(input("請輸入倒數的秒數："))

while countdown > 0:      
    print(countdown)
    time.sleep(1)
    countdown -= 1    

print("時間到！")
```

    請輸入倒數的秒數：4
    4
    3
    2
    1
    時間到！
    


```python
"""使用者輸入：寫一個程式，要求使用者輸入一個整數，然後使用while迴圈，只有當輸入的數字是正整數時，才停止請求輸入。如果輸入不是正整數，則繼續要求輸入，直到收到正確的輸入。
""" 

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}")
```

    請輸入一個正整數：7.4
    請輸入正確的整數。
    請輸入一個正整數：4
    您輸入了正整數：4
    

## 全部的note
<pre>

計算符號之間可以加空白鍵 <br>
** : 幾次方<br>
sep="." : 分隔符號為.
end="/" : 結束用/結束

在print內寫入%d : 放入參數答案  (最後在答案要加%)
            %s : 放入的答案為字串
            %f : 放入的答案包含全部小數點
            %.1f :        包含 1位小數點
            %.3f :        包含 3位小數點
寫法如下- print("身高為%d cm，體重為%d kg，BMI為%.1f " % (height,weight,bmi))
                
    
print("顯示的文字",參數名字)<br>
my_height = input("請輸入身高(cm)") : 可以輸入文字進去對話框
使用者輸入的文字要轉換成"int"  ()<br>

print("姓名  成績")
print("%3s %3d"%(name1,score1))   #按照字元數進行規則排列出一格表格格式

**次方
//整除的數
/除以
%餘數
and 放在兩個運算子中間，判斷True or False，當兩個都為True才會是True
or 放在兩個運算子中間，判斷True or False，當兩個都為False才會是False

if,else,elif需使用冒號:還有縮排來寫code
.upper可以讓程式不用判斷大小寫

串列list用中括弧括起來
for和其他語法一樣，他同樣也是需要用到:還有縮排來寫程式

break會跳出這個迴圈
continue跳出執行這個code 繼續執行下一個i的程式
None 為一個什麼都沒有的數字，但是他可以做加減乘除的運算

</pre>

## [ afterclass practice ]

> 1. 複習ch03、ch04 
> 2. 教學影音 lesson 7、9

+ ## 教學影音 lesson 7,9
這次的教學影片是前兩週給我們觀看的，透過影片讓我們複習在這兩周內我們所學到的東西
(if,for,while,break,and coutinue)

## [ self practice ]
* 綜合演練1

in-line 上課習題的註解


```python
#以for迴圈計算1-100中所有基數總和

sum=0
for i in range(1,101,2):
    sum= sum+i
    
print("所有奇數總和為",sum)
```

    所有奇數總合為 2500
    
* 累積加法：

```python
#寫一個程式，要求使用者不斷輸入整數，並使用while迴圈計算這些整數的總和。當使用者輸入0時，停止接受輸入並印出總和。

total = 0      #一開始要設定total的初始值

while True:    #當正確時就會一直執行程式內的內容，錯誤才會離開
    num = int(input("請輸入一個整數（輸入0結束）："))   #請使用者輸入一個整數
    if num == 0:            # 當輸入的數字是0時
        break               # 就要停止接受輸入
    total += num            # 如果輸入數字不為0時，就要把輸入進來的數字做加總: total=原本的total+輸入進來的數字num

print(f"總和：{total}")     # 然後最後要印出總和
```

    請輸入一個整數（輸入0結束）：4
    請輸入一個整數（輸入0結束）：5
    請輸入一個整數（輸入0結束）：7
    請輸入一個整數（輸入0結束）：0
    總和：16
    
