# 資研 11/24 社課講義
[**提問表單**](https://forms.gle/z4dPC1JPV6uA2q9w7)
[**上課PPT**](https://www.canva.com/design/DAF09dfvCM4/M1576DO_CQIU3UmHsPIVmQ/view?utm_content=DAF09dfvCM4&utm_campaign=designshare&utm_medium=link&utm_source=editor)
---
## For迴圈 For Loops
### 基本觀念
- 範例3. 詢問使用者要印出的邊長,並印出"正方形"(利用*)
```python=
a = int(input('請輸入正方形的邊長:'))
for i in range(a):
print('*'*a)
```
### 延伸
1. 控制迴圈程序:**continue**、**break**、**pass**
> continue:出現時,不繼續執行下方迴圈內程式,而是回到迴圈一開始繼續執行
> break:出現時,直接結束迴圈
> pass:跳過不執行(多用於測試時)
- 範例4. 請印出1~5跳過3不印
```python=
for i in range(1, 6):
if i == 3: continue
print(i)
```
- 範例5. 請使用者輸入1個數字,從1開始印到該數的一半時停止(無條件進位)
```python=
a = int(input('請輸入一個數字:'))
b = a//2+1 # 設定為該數的一半加一->配合range()不輸出最後一個的特性
for i in range(1, a):
if i == b: break # 符合條件->停止迴圈
else: print(i)
```
2. 雙重迴圈:有2個變數同時迭代
- 範例6. 印出"九九乘法表"
:::warning
- '\t':讓輸出變整齊
- 雙重迴圈->類似於n宮格的概念
:::
```python=
for i in range(1, 10):
for j in range(1, 10):
print(f'{i}*{j}={i*j}', end='\t')
print()
```
---
## While迴圈 While Loops
1. 基本架構
```python=
while '條件式':
'要執行的程式碼'
```
2. 和for迴圈作用相似,主要使用時機為<font color="#CE0000">**不知道確切要執行幾次時**</font>
3. <font color="#CE0000">**也可**</font>使用`continue`、`break`、`pass`控制執行條件
```python=
i = 0
while i<2:
i += 1
print(i)
```
:::warning
**常見使用情景-多次輸入**
- 範例1.請你寫一個程式,當使用者輸入一個數字就回傳該數的平方,若輸入0則該程式停止
```python=
while True:
a = int(input())
if a == 0: break
else:
print(a**2)
```
:::
- 範例2.請利用while loops計算1+2+3+4+5+...+n<2023,n最大為多少
```python=
i = 1
s = 0
while s+i < 2023:
s += i
i += 1
print(s, i)
```
---
## **練習題**
**Zerojudge**
[**連結**](https://zerojudge.tw/)
---
## 補充資料
**推薦網站:**[**W3Schools**](https://www.w3schools.com/)