Python Loop

Python 教學 2 – 基本語法:Output, Loop, Control Flow

1. Output

1.1 print

print 可以用來 output 字串

print('Hello World!')
# Hello World!

print function 接受幾個 arguments:

print(*objectssep=’ ‘end=’\n’file=Noneflush=False)
*object – 可為一個以上的 objects,如果超過一個 object,要用 , 來區隔
sep – 分隔符號,用來 concat object 之間的字串,default 為一個空格
end – 結束符號,用來決定輸出的結尾要加上什麼字串,default 為 \n
file – 輸出至指定的檔案
flush – 是否將 buffering 的 data 寫入到檔案中,預設為 false

str1 = 'Hello'
str2 = 'World'
print(str1, str2, sep = ' Jimmy ', end = 'Yes!!!')
# Hello Jimmy WorldYes!!!

flush 是用來做什麼的?

舉例來說,要將 print 的字串寫入到某個檔案裡:

f = open('test.txt', 'w')
print('Hello World', file = f)

執行完會發現字串並沒有被寫入檔案裡,原因是執行完後,’Hello World’ 會被存在 buffering 裡的,直到執行 f.close() 才會將 buffering 的內容寫到檔案裡。

如果將程式改寫成:

f = open('test.txt', 'w')
print('Hello World', file = f, flush = true)

那麼不用 f.close() Python 就會將字串寫進檔案裡。

2. Loop

2.1 for loop

2.1.1 迭代 list 或是 string

# 迭代 list
words = ['cat', 'window', 'defenestrate']
for w in words:
    print(w, len(w))
cat 3
window 6
defenestrate 12

# 迭代 string
str = 'Hi'
for s in str:
    print(s)
H
i

2.1.2 搭配 range 使用

用來決定要重複執行幾次 loop

range function 可以產生一個等差數列
range(startstop[, step])

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]
for i in range(5):
    print(i)
0
1
2
3
4

a = ['Mary', 'had', 'a']
for i in range(len(a)):
    print(i, a[i])
0 Mary
1 had
2 a

2.2 while loop

通常用在不確定 loop 會跑幾次的情況,只要 condition 是 true 就會持續執行

i = 0
while i < 4:
  i += 1
  if i == 3:
    continue
  print(i)
1
2
4

2.3 break Statements

break 會立刻跳出 loop,不繼續執行 loop

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

i = 1
while i < 6:
  print(i)
  if (i == 2):
    break
  i += 1
1
2

2.4 continue Statements

continue 會直接跳到下一次的 loop

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  if x == "banana":
    continue
  print(x) 
apple
cherry

i = 0
while i < 4:
  i += 1
  if i == 3:
    continue
  print(i)
1
2
4

2.5 else clauses

else 用來決定跑完 loop 要做什麼事,但如果 loop 是被 break 給停止的話,那就不會執行 else 的 block

for x in range(3):
    print(x)
else:
    print('Finished!')
0
1
2
Finished!

i = 1
while i < 3:
  print(i)
  i += 1
else:
  print("i is no longer less than 3")
1
2
i is no longer less than 3

3. Conditions

3.1 if Statements – if, elif, else

a = 200
b = 33
if b > a:
  print("b is greater than a")
elif a == b:
  print("a and b are equal")
else:
  print("a is greater than b")
a is greater than b

3.2 ternary operator

a, b = 10, 20
min = a if a < b else b
print(min)
10

3.3 match Statements

用來一次判斷多種 conditions,其中 _ 用來表示都不符合以上的 case 時要做的事情:

def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case _:
            return "Something's wrong with the internet"

當多個 case 要做一樣的事情時,可以用 | 來表示:

case 401 | 403 | 404:
    return "Not allowed"

也可以在 case 中加入 if 做判斷:

match point:
    case Point(x, y) if x == y:
        print(f"Y=X at {x}")
    case Point(x, y):
        print(f"Not on the diagonal")

4. 參考資料

4. 深入了解流程控制— Python 3.11.4 說明文件
內建函式 — Python 3.11.4 說明文件
python的print(flush=True)实现动态loading……效果原创
Python While Loops – W3Schools
Ternary Operator in Python – GeeksforGeeks

如果覺得我的文章有幫助的話,歡迎幫我的粉專按讚哦~謝謝你!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top