National Yunlin University of Science and Technology
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try a Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

1

Local AI

--

Uedu Code

--

雲林科技大學 AQI 62 26°C PM2.5 12
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 08

流程控制:迴圈

while、for 與 range(),以及 break/continue/else
Interaction實作 30 minute(s)

Learning Objectives

  • 迴圈敘述 while 的用法:條件為 True 就重複執行
  • 迴圈敘述 for 的用法:依序走訪序列(字串、串列、range)中的每個元素
  • 用 range(start, stop, step) 產生整數序列
  • break、continue 與迴圈的 else 區塊

為什麼需要迴圈

電腦最擅長的事就是重複。要印出 1 到 100,不需要寫 100 行 print(), 而是告訴電腦「這件事做 100 次」。Python 有兩種迴圈:

迴圈 什麼時候用 停止條件
while 不知道要重複幾次,只知道「什麼條件下繼續」 條件變成 False
for 要把一串東西(字串、串列、range)逐一拿出來處理 東西拿完了

注意縮排:迴圈「要重複的程式」必須縮排在 while 或 for 底下,縮排結束就是迴圈結束。

while 迴圈:計算階乘

按 ▶ 自動播放,或用「下一步」一步一步看。注意右邊的 n 和 r 每一圈怎麼變,以及 while n <= m 在哪一刻變成 False。下方可以改 input() 讀到的數字再跑一次。

for 迴圈:逐一走訪串列

for f in fruits 每一圈把串列裡的下一個元素「指派」給 f。看右邊 f 的值如何依序換成三個字串。

range():產生一串整數

for 最常搭配 range() 使用。range(start, stop, step) 產生從 start 開始、 每次加 step、不包含 stop 的整數:

>>> list(range(5))        # start 預設 0
[0, 1, 2, 3, 4]
>>> list(range(1, 5))     # step 預設 1
[1, 2, 3, 4]
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]

互動練習:range()

拖曳三個滑桿,看數線上會出現哪些數字。試試看:step 改成負數時,start 要比 stop 大還是小?

for + range():1 加到 5

range(1, 6) 產生 1、2、3、4、5。數數看迴圈一共跑了幾圈。

巢狀迴圈:外層一步,內層一整圈

迴圈裡面還可以有迴圈。外層的 i 每換一個值,內層的 j 就要從 1 跑到 3。這是投影片九九乘法表的縮小版(3×3),下面的實作題再完成完整的 9×9。

break 與 continue

continue=跳過這一圈剩下的程式,直接進入下一圈;break=立刻離開整個迴圈。仔細看執行箭頭在 continue 與 break 之後跳到哪裡。

迴圈的 else

迴圈也可以接 else:當迴圈自然跑完(沒有被 break 中斷)時才執行。適合「找東西,找不到要另外處理」的情況。

想一想

1.

下面的程式會印出什麼?

for i in range(1, 5):
    print(i, end=" ")
2.

下面的程式會印出什麼?

n = 0
while n < 10:
    n += 3
print(n)
3.

迴圈後面的 else 區塊什麼時候會執行?

第 1 次作答

追蹤 break 與 continue

1.

下面的程式會印出什麼?

for i in range(6):
    if i == 2:
        continue
    if i == 4:
        break
    print(i, end=" ")
2.

巢狀迴圈 for i in range(3): 裡面再放 for j in range(4):,最內層的程式一共執行幾次?

第 1 次作答

實作:九九乘法表

用巢狀迴圈印出 9×9 乘法表:每一列是 i 乘上 1 到 9,數字之間用一個空白隔開,每一列結束換行。補完 TODO 那一行後按「執行並檢查」。

你的輸出
預期輸出

重點精華回顧

  • while 條件: 先檢查條件再執行;條件一開始就不成立,迴圈一次都不會跑。記得在迴圈裡改變條件,否則會變成無窮迴圈。
  • for 變數 in 序列: 依序把序列的每個元素指派給變數,元素拿完就結束。
  • range(start, stop, step):不包含 stop;start 預設 0、step 預設 1;step 可以是負數。
  • 巢狀迴圈:外層走一步,內層走完一整圈;總次數是兩層次數相乘。
  • continue 跳到下一圈,break 離開整個迴圈;迴圈的 else 只在沒有 break 時執行。
這一課完成了!
Next lesson:串列(List)
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。