Python [2] 基礎語法

迴圈/串列

INFOR38th 學術 葉倚誠

講師:葉倚誠

  • 年次:116

  • 社團:建中資訊

  • 幹位:學術

  • 放課:演算法(STL、基礎圖論)

  • 火鍋加芋頭、咖哩飯要拌

  • 大括號不下放

My IG

INFOR38th IG

課程目錄

  • for loop

  • while loop

  • breck

  • continue

  • list

  • Kahoot!

變數/判斷式(複習)

迴圈

for loop、while loop、break/continue

for loop

如果今天,有一段程式碼需要被重複執行數次?

E.g. 在 Terminal 輸出 Hello 100 次

 

打一百次 print("Hello")?

 

使用 for loop!

range

可以產生特定的數字群集!

經常與 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 loop

for i in range(100):
    print("Hello")

# 輸出 100 次 Hello
    

總共執行 100 次!

可以藉由 for 迴圈避免重複的程式碼

以增加程式碼的可讀性

for loop

連續正整數和

n = int(input())
sum = 0
for i in range(1, n + 1):  # 從 1 開始連加直到 100
    sum += i
print(sum)

"""
input:100
output:5050
"""

for loop

星星三角形

n = int(input())
for i in range(n):
    for j in range(i + 1):
        print("*", end="")  # 加上 end=""避免換行
    print()  # 完成一層後換行

"""
input: 3
output:
*
**
***
"""

for loop

練習:顛倒星星三角形

參考前一頁的程式碼,輸出由 "*" 組成的三角形,但方向顛倒

E.g.

input: 5

output:

*****

****

***

**

*

 

for loop

練習:顛倒星星三角形

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

while loop 是 python 另一種常見的迴圈

可以輸入一個布林值,而迴圈內的程式碼會重複執行

直到布林值為 False 為止

"""
while 布林值:
	程式碼 (重複執行直到布林值 = False)
"""

while loop

連續正整數和

n = int(input())
sum = i = 0
while i <= n:
    sum += i
    i += 1
print(sum)

"""
input:100
output:5050
"""

while loop

練習:總分計算

利用 while 迴圈,讓使用者輸入成績,直到輸入 -1 為止

結束後輸出總分

E.g.

input: 

100

50

-1

output:

150

 

while loop

練習:總分計算

sum = 0
n = int(input())
while n != -1:
    sum += n
    n = int(input())
print(sum)

"""
input: 10 10 -1
output: 20
"""

break

如果迴圈尚未執行完成,但需要強制跳出?

 

使用 break 函式!

for i in range(5):
  print(i)
  if i == 2:
    break
    
"""
0
1
2
"""

continue

 

在迴圈執行時跳過當次程式片段,而不直接跳出迴圈

與 break 最大的不同:中斷後繼續執行下一次程式片段

for i in range(5):
  if i == 2:
    break
  print(i)
    
"""
0
1
3
4
"""

break / continue

練習:試撰寫一個程式,使用者輸入一個數字 n,終端機列印出 0 ~ n-1 的所有數字,但不包含 3 的倍數

E.g.

input: 7

output:

0

1

2

4

5

break / continue

練習:試撰寫一個程式,使用者輸入一個數字 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
"""

List

list

 

如果今天,我需要儲存 1000 名學生的分數

使用變數儲存,我就需要宣告 1000 個變數

 

 

使用 list 儲存大量資料!

list

 

scores = [100, 90, 80, 70, 60]
# 宣告一個串列 scores 來儲存資料
"""
串列名稱 = [元素1, 元素2, 元素3, ...]
"""

Python 中,串列的索引值是從 0 開始!

list

 

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 ~ -(串列長度)

list

 

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]

list

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 可使用的函式

list + for loop

list1 = [10, 20, 30, 40, 50]
for i in list1:
  print(i)
  
"""
10
20
30
40
50
"""

可以使用 for loop 存取 list 中的資料!

Kahoot

The End

Made with Slides.com