INFOR38th 學術 葉倚誠
年次:116
社團:建中資訊
幹位:學術
放課:演算法(STL、基礎圖論)
火鍋加芋頭、咖哩飯要拌
大括號不下放
My IG
INFOR38th IG
for loop
while loop
breck
continue
list
Kahoot!
for loop、while loop、break/continue
如果今天,有一段程式碼需要被重複執行數次?
E.g. 在 Terminal 輸出 Hello 100 次
打一百次 print("Hello")?
使用 for loop!
可以產生特定的數字群集!
經常與 for loop 搭配使用,如前例
range(起始值 = 0, 終止值, 間隔 = 1);
for i in range(5):
print(i)
"""
0
1
2
3
4
"""
for i in range(10, 20, 3):
print(i)
"""
10
13
16
19
"""
從10開始;每次增加3;直到20
for i in range(100):
print("Hello")
# 輸出 100 次 Hello
總共執行 100 次!
可以藉由 for 迴圈避免重複的程式碼
以增加程式碼的可讀性
n = int(input())
sum = 0
for i in range(1, n + 1): # 從 1 開始連加直到 100
sum += i
print(sum)
"""
input:100
output:5050
"""
n = int(input())
for i in range(n):
for j in range(i + 1):
print("*", end="") # 加上 end=""避免換行
print() # 完成一層後換行
"""
input: 3
output:
*
**
***
"""
參考前一頁的程式碼,輸出由 "*" 組成的三角形,但方向顛倒
E.g.
input: 5
output:
*****
****
***
**
*
n = int(input())
for i in range(n, 0, -1):
for j in range(i):
if j <= i:
print("*", end="")
print()
"""
input: 3
output:
***
**
*
"""while loop 是 python 另一種常見的迴圈
可以輸入一個布林值,而迴圈內的程式碼會重複執行
直到布林值為 False 為止
"""
while 布林值:
程式碼 (重複執行直到布林值 = False)
"""n = int(input())
sum = i = 0
while i <= n:
sum += i
i += 1
print(sum)
"""
input:100
output:5050
"""
利用 while 迴圈,讓使用者輸入成績,直到輸入 -1 為止
結束後輸出總分
E.g.
input:
100
50
-1
output:
150
sum = 0
n = int(input())
while n != -1:
sum += n
n = int(input())
print(sum)
"""
input: 10 10 -1
output: 20
"""如果迴圈尚未執行完成,但需要強制跳出?
使用 break 函式!
for i in range(5):
print(i)
if i == 2:
break
"""
0
1
2
"""
在迴圈執行時跳過當次程式片段,而不直接跳出迴圈
與 break 最大的不同:中斷後繼續執行下一次程式片段
for i in range(5):
if i == 2:
break
print(i)
"""
0
1
3
4
"""練習:試撰寫一個程式,使用者輸入一個數字 n,終端機列印出 0 ~ n-1 的所有數字,但不包含 3 的倍數
E.g.
input: 7
output:
0
1
2
4
5
練習:試撰寫一個程式,使用者輸入一個數字 n,終端機列印出 0 ~ n-1 的所有數字,但不包含 3 的倍數
n = int(input)
for i in range(n):
if n % 3 == 0:
continue
print(i)
"""
input: 5
output:
0
1
2
4
"""
如果今天,我需要儲存 1000 名學生的分數
使用變數儲存,我就需要宣告 1000 個變數
使用 list 儲存大量資料!
scores = [100, 90, 80, 70, 60]
# 宣告一個串列 scores 來儲存資料"""
串列名稱 = [元素1, 元素2, 元素3, ...]
"""Python 中,串列的索引值是從 0 開始!
scores = [100, 90, 80, 70, 60]
print(scores[0]) # 100
print(scores[0:2]) # [100, 90]
print(scores[-3]) # 80
print(scores[2:]) # [80, 70, 60]
print(scores[:2]) # [100, 90]
索引值範圍從 0 ~ 串列長度 - 1
若索引值為負數,範圍則為 -1 ~ -(串列長度)
| del list1[] | 刪除元素 | del list1[1:3] | list1 = [10, 40, 50] |
| list1.remove() | 刪除元素 | del list1(10) | list1 = [20, 30, ...] |
| append() | 加入元素 | list1.append(60) | list1 = [... , 50, 60] |
| insert() | 插入元素 | list1.insert(0, 1) | list1 = [10, 20, 0, ...] |
| min() / max() | 最大/最小值 | min(list1) | 10 |
| reverse() | 反轉順序 | list1.reverse() | list1 = [50, 40, ...] |
| sort() | 由小到大排序 | list1.sort() | list1 = [10, 20, ...] |
list1 = [10, 20, 30, 40, 50]
list1 = [10, 20, 30, 40, 50]
del list1[2] # [10, 20, 40, 50]
list1.append(60) # [10, 20, 40, 50, 60]
list1.remove(20) # [10, 40, 50, 60]
list1.insert(1, 0) # [10, 0, 40, 50, 60]
print(max(list1), min(list), sep=" ") # 60 10
list1.reverse() # [60, 50, 40, 0, 10]
list1.sort() # [0, 10, 40, 50, 60]
# 參考前頁所提及,list 可使用的函式
list1 = [10, 20, 30, 40, 50]
for i in list1:
print(i)
"""
10
20
30
40
50
"""
可以使用 for loop 存取 list 中的資料!