

# 如何確認 YouTube 程式教學現在是否仍然適用

要確認舊的 YouTube 教學是否適用於你的軟體版本，先記錄教學註明的版本，以及畫面上可見的確切步驟。將這些步驟與適用於你所用版本的官方文件比較。接著，在自己的電腦上測試一個無害的範例。將結果存入版本與步驟對照表。在跟著完整教學操作之前，請清楚保留有變更的操作指示與尚未釐清的步驟。

先準備影片、你使用的軟體，以及官方文件。短篇教學可以手動查核。時間標記字幕能幫你在較長的影片中找到操作指示。但字幕無法確認畫面上顯示的程式碼，也無法證明程式碼能正常運作。

最後得到的表格會說明你查核了什麼、有哪些變更，以及哪些部分仍缺乏證據。它能協助你針對一項教學任務，在一組明確記錄的環境設定下做決定。

## 1. 定義任務，記錄教學與本機版本

選定你想從教學中得到的一項結果。例如，你可能想移除文字開頭完全符合指定內容的前綴。前綴是位於一段較長文字開頭的文字。

將任務範圍縮小到可以查核的程度。「這個文字操作能正常運作嗎？」能讓你訂出明確的測試。「這門程式設計課程現在還好嗎？」則不能。

有一則[公開的程式設計提問](https://www.reddit.com/r/learnprogramming/comments/1gz6km5)問道：「只靠 YouTube 影片和大量練習，我能學會寫程式嗎？」所提供的證據指出，回覆提到了軟體版本過時的問題。這是開始練習前先檢查環境設定的一個實際理由。但這一則提問無法衡量有多少學習者遇到這個問題。

複製操作指示前，先記錄以下資訊：

1. 教學標題與影片網址。
2. 發布日期，若已知。
3. 教學註明的軟體名稱與版本。
4. 教學在哪裡註明該版本。
5. 你實際要使用的軟體版本。
6. 你進行查核的日期。
7. 你想重現的一項結果。

環境是指你執行工作時使用的軟體設定。若其他設定會影響所選步驟，也要一併記錄。例如，教學若指定了必要工具的版本，就應記錄該版本。

請分開記錄發布日期與軟體版本。最近上傳的影片，不代表其中的操作指示符合你的版本。較早上傳的影片，也不代表每項操作指示都已失效。

教學若未提供版本，請填寫「未知」。不要根據影片年代或外觀猜測。若你無法確認自己使用的版本，請先補齊這項資訊，再宣稱版本相符。

## 2. 找出每項操作指示，並查看畫面

觀看執行所選任務的影片片段。在每個必要動作處暫停。提出變更之前，先完整照錄畫面上的操作指示。

字幕是隨影片儲存的一段文字。逐字稿則彙集字幕文字。時間標記片段是附有開始與結束時間的一段字幕。

用字幕找出可能相關的片段，再觀看這些片段。講者可能只說「執行這個」，而完整指令只出現在畫面上。字幕也可能誤寫軟體名稱，或漏掉沒有口頭說明的動作。

如果影片很長，可以使用[在長篇講課中尋找單一概念](/zh-Hant/articles/%E9%95%B7%E7%AF%87-youtube-%E8%AA%B2%E5%A0%82%E5%BD%B1%E7%89%87-%E6%A6%82%E5%BF%B5%E6%9F%A5%E6%89%BE/)介紹的聚焦查找方法。這裡的目的是找出必須驗證的操作指示，不必替整堂課建立索引。

針對每個必要步驟：

1. 記錄操作指示出現的影片時間。
2. 閱讀畫面上的程式碼、選單選項或設定。
3. 記錄緊接在該步驟之前顯示的所有設定。
4. 保留原始操作指示。
5. 將看不清楚的文字標為尚未釐清。

不要將口述內容當成已擷取的程式碼。下方介紹的字幕工具不會進行光學字元辨識。這個詞指的是從影像中讀取文字。你必須自行檢查畫面。

寫著「成功了」的留言，可以提供查核方向，但不能證明相容性。相容性是指操作指示能在相關軟體版本中正常運作。該留言可能沒有註明版本，也沒有列出實際使用的確切步驟。

如果留言提到找不到按鈕或出現錯誤，請先與實際影片片段比較，再將留言當作證據。[將留言與教學片段對照查核](/zh-Hant/articles/%E5%88%A9%E7%94%A8-youtube-%E7%95%99%E8%A8%80%E6%89%BE%E5%87%BA%E6%95%99%E5%AD%B8%E4%B8%8D%E8%B6%B3/)說明了這項獨立的查核方法。在確認留言所用的環境設定與相關性之前，請只將它當作線索。

## 3. 有需要時使用時間標記字幕

[YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper) 是一個 Actor，也就是在託管環境中執行、用來收集資料的程式。這裡的文件記載，它的用途是讀取現有的公開字幕。你仍須自行找出操作指示、檢查畫面、閱讀官方文件，並判讀測試結果。

2026 年 10 月 25 日查核的公開規格說明了建置版本 0.1.43。它接受直接指向公開 YouTube 影片的網址，或影片 ID。ID 是識別影片的短代碼。它不接受以頻道、播放清單或搜尋頁面作為來源清單。它會讀取現有字幕軌，不會將語音轉成新的文字，也不會下載音訊或影片。

公開的[時間標記逐字稿 Task](https://apify.com/chronometrica/youtube-transcript-scraper/examples/youtube-timestamped-transcript-json) 是可供起步使用的預設設定。Task 是一組已儲存的輸入值。2026 年 10 月 25 日已找到它的公開頁面與 Task ID。該次查核未檢查登入後才能查看的已儲存輸入，也未測試執行。

這組簡短的輸入通過了所提供的結構規格檢查。結構規格定義允許使用的輸入欄位與值。通過結構規格檢查，不代表已成功執行資料擷取。

```json
{"includeFailedInputDetails":true,"outputFormats":["json"],"preferredLanguages":[],"startUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}
```

3. 有需要時使用時間標記字幕

執行前：

1. 將 `startUrls` 中的整份範例清單替換成你要查核的公開教學網址。
2. 將 `outputFormats` 保持設為 `["json"]`，以要求取得時間標記片段。
3. 選定字幕語言的選取規則。
4. 將 `includeFailedInputDetails` 保持設為 true，讓失敗的輸入仍會顯示在執行報告中。

範例網址只是結構規格的示例，不能作為取得有用教學結果的證據。本指南未執行任何 Actor。

空的 `preferredLanguages` 清單會要求取得可用字幕軌中最適合的一個，但不保證是英文。如果你設定語言偏好，Actor 會依序嘗試。若偏好的語言都不可用，文件記載的結果是帶有明確類別的語言不可用失敗。這表示結果會註明失敗類別，而不會在未告知的情況下切換成其他語言。

文件記載的輸入上限範圍為 1–1,000 筆。重複的影片 ID 只會處理一次。這次查核請只使用一支教學影片。

依計畫執行後，請先檢查結果，再使用文字。資料集中的一列代表一筆已儲存的影片結果。每支成功處理且不重複的影片都會產生一列。失敗的輸入會出現在名為 OUTPUT 的執行報告中。

保留影片識別資訊，以及 `status`、`statusReason`、`transcriptLanguageCode`、`isAutoGenerated` 和 `scrapedAt`。最後一個欄位記錄資料擷取時間。保留原始 `segments`，包括其中的 `text`、`startSeconds`、`endSeconds` 和 `durationSeconds`。

使用回傳的時間找出影片片段。只有純文字，無法確定字幕的結束時間。即使有結束時間，缺少的持續時間仍屬未知。不要用零替代缺失值。

語言標籤、字幕來源標籤與涵蓋率數值，都不能證明文字正確。無論如何，都要觀看相關片段。

字幕是公開來源資料。你儲存的輸入、私人執行紀錄、本機版本紀錄與測試結果，則是各自獨立的紀錄。公開的預設設定頁面，不能證明帳號擁有者實際儲存或執行了什麼。

## 4. 建立版本與步驟對照表

版本與步驟對照表會將每項操作指示，與其來源、官方參考文件及測試結果連結起來。每個必要步驟使用一列。如果兩個動作需要不同的查核，請分成兩列。

儲存以下欄位：

| 欄位 | 應儲存的內容 |
| --- | --- |
| 任務 | 你想達成的一項小範圍結果 |
| 影片來源 | 標題與公開網址 |
| 來源定位資訊 | 影片時間，以及相關字幕片段，若有 |
| 原始操作指示 | 畫面上可見的確切程式碼、選項或動作 |
| 教學版本 | 教學註明的版本及其出處，或填寫未知 |
| 本機環境 | 你實際使用的軟體版本與相關設定 |
| 官方參考文件 | 頁面網址、適用版本範圍與相關段落 |
| 參考文件查核日期 | 你閱讀該頁面的日期 |
| 擬議變更 | 你提出的替代操作指示，與原始指示分開保留 |
| 測試輸入 | 若已測試，記錄確切且無害的輸入 |
| 預期結果 | 應出現的結果及其原因 |
| 實際結果 | 實際觀察到的確切輸出或錯誤，或填寫未測試 |
| 測試日期 | 進行測試的日期，或填寫未測試 |
| 狀態 | 已查核、有文件依據的變更、未測試，或無法繼續 |
| 待解決問題 | 缺少的證據，以及下一項必要查核 |

保留錯誤時，要與保留成功輸出一樣仔細。不要將錯誤替換成你預期的結果。

缺少資訊時，請填寫「未知」。只有確實知道數值為零時，才使用零。「沒有測試紀錄」不代表「零次失敗」，而是表示該列沒有測試證據。

將原始操作指示與擬議操作指示保留在不同欄位。否則，之後的讀者便無法看出變更內容與原因。

## 5. 閱讀該功能與版本的官方參考文件

開啟該項確切功能的官方文件。功能是指軟體的一項作用或行為。確認該頁面適用於哪個軟體版本。

除了閱讀行為說明，也要閱讀功能何時新增、變更或移除的註記。儲存相關段落，以及你查核的日期。

依照以下順序進行：

1. 核對確切的功能名稱與畫面上的操作指示。
2. 確認參考文件適用的版本。
3. 閱讀預期行為的說明。
4. 查閱版本註記。
5. 將文件的適用範圍與本機版本比較。
6. 記錄仍缺少的資訊。

目前的文件頁面可能註明某項功能何時新增，但這不代表它能證明所有較早版本中的每一項行為。如果頁面不涵蓋你需要的版本，請將該部分保留為尚未釐清，直到找到相關的官方參考文件。

不要因為找不到文件，就推斷某項功能不存在。請將未能找到文件的情況記錄為來源證據缺口。

[Python 官方字串參考文件](https://docs.python.org/3/builtins/stdtypes.html#str.removeprefix)提供了一個清楚的例子。當字串開頭完全符合所指定的前綴時，`str.removeprefix` 會移除該前綴。否則，它會傳回未變更的字串。參考文件指出，這項功能於 Python 3.9 新增。

所提供的同一份參考文件證據，也說明了 `lstrip` 的不同之處：它會移除開頭屬於指定集合的字元。它不能作為精確前綴移除的等效替代。名稱相似，或在某一組輸入上得到相似結果，都不能證明行為相同。

## 6. 選擇結果明確的無害測試

可重現性測試會檢查：你能否在明確記錄的環境中，使用明確記錄的輸入，得到所述的結果。

選擇能回答功能問題的最小測試。優先選用只處理本機數值或文字、且不會影響外部的操作。執行前，先寫下預期結果。

進行第一次查核時，請避開未經檢查的安裝、建立帳號、存取憑證、正式運作系統，以及未經檢查就複製的指令。存取憑證是用來取得存取權的機密資料。正式運作系統是用於實際工作的系統。

記錄確切輸入、預期輸出、實際輸出、本機版本與測試日期。如果測試失敗，請保留確切錯誤，並停止該步驟。不要做出多項未說明原因的變更後，只記錄最後成功的結果。

無害的功能測試用途有限。它能確認一項操作在你的環境中是否可行，但不能證明整個專案能完成安裝、每個教學步驟都能正常運作，或其他軟體版本也有相同行為。

## 7. 實作範例：精確移除前綴

這個範例使用所提供的本機測試紀錄。它不是原創虛構案例，也不是對真實 YouTube 教學進行的測試。

紀錄中的環境為 Python 3.12.12。查核日期為 2026 年 10 月 25 日。測試只使用本機標準函式庫的字串運算式。標準函式庫是 Python 隨附的工具集合。這項測試不包含安裝、網路存取，也沒有執行教學步驟。

任務是從字串中移除完全符合指定內容的前綴。字串是一種文字值。

第一個運算式：

```python
"Arthur: three!".removeprefix("Arthur: ")
```

7. 實作範例：精確移除前綴

預期結果為 `three!`。紀錄中的實際結果也是 `three!`。

這個前綴包含八個字元：六個字母、一個冒號，以及一個空格。原始文字包含 14 個字元。移除該前綴後，剩下 14 − 8 = 6 個字元，也就是 `three` 中的五個字母，以及一個驚嘆號。這裡的單位是字元，不是位元組。

第二個運算式：

```python
"Arthur: three!".lstrip("Arthur: ")
```

7. 實作範例：精確移除前綴

預期結果為 `ee!`。紀錄中的實際結果也是 `ee!`。

在這裡，`lstrip` 會將指定文字視為一組可從開頭移除的字元。移除 `Arthur: ` 之後，它會繼續移除 `three!` 開頭的 `t`、`h` 和 `r`，因為這些字元也在指定的集合中。遇到 `e` 時才會停止。

這樣會移除八個前綴字元，以及另外三個字元。計算結果是 14 − 8 − 3 = 3 個字元。剩下的文字為 `ee!`。

| 查核項目 | 已記錄的證據 | 限制 |
| --- | --- | --- |
| 本機版本 | Python 3.12.12 | 不代表其他環境的情況 |
| 官方版本註記 | `str.removeprefix` 於 Python 3.9 新增 | 不能證明後續版本中的每一項行為 |
| 精確前綴測試 | 預期為 `three!`；實際為 `three!` | 只查核了這個運算式與這組輸入 |
| 開頭字元移除測試 | 預期為 `ee!`；實際為 `ee!` | 說明為何這個運算式不能作為等效替代 |
| 教學版本與來源定位資訊 | 未知；未測試任何教學 | 不能將任何教學步驟標為已查核 |
| 完整流程 | 未測試 | 不能宣稱完整教學已成功執行 |

這些證據只能支持範圍有限的決定。如果你要做的文字操作是精確移除前綴，而且版本支援該功能，就使用精確前綴移除。不要將它替換成 `lstrip`，以為兩者意思相同。

查核自己的教學時，請補上畫面上實際可見的操作指示，以及對應的影片時間。接著，在你記錄的版本上自行執行無害測試。所提供的結果是關於 Python 3.12.12 的證據，不是你電腦上的測試結果。

## 8. 設定狀態，決定哪些步驟可以繼續

整份表格請統一使用以下四種狀態：

| 狀態 | 意義 | 下一步決定 |
| --- | --- | --- |
| 已查核 | 你已檢查操作指示，並在所記錄的環境中確認所選測試的結果 | 在已測試的範圍內繼續 |
| 有文件依據的變更 | 官方參考文件支持一項相關的版本差異 | 保留原始指示、提出變更，並記錄是否已測試該變更 |
| 未測試 | 你尚未執行必要的測試 | 先測試，再宣稱它能在本機正常運作 |
| 無法繼續 | 缺少證據，或必要動作不安全，導致無法進行查核 | 先解決缺口，再依照該步驟操作 |

有文件依據的變更，不會自動成為已測試的修正。請將測試結果保留在獨立的結果欄位中。如果需要新的操作指示，請另建一列，讓證據保持清楚。

如果沒有字幕，仍可手動查看影片。如果畫面無法辨讀，請將確切的操作指示保留為尚未釐清。如果你不知道自己使用的版本，請先確認，再宣稱相容。如果官方參考文件的適用範圍不符，請保留這項來源證據缺口。

跟著完整教學操作之前，請查核每個必要步驟所在的資料列。每一列都需要證據，以支持你計畫採取的動作。一個運算式通過測試，不代表尚未測試的安裝或帳號步驟也已通過查核。

不要將這份表格轉成整體影片品質分數。它的用途是協助你做出一項實際決定：在所記錄的環境中，哪些操作指示可以採用，哪些仍需進一步處理。

## 接著查核一個必要步驟

從教學中選出一項畫面上可見的操作指示。記錄教學與本機的版本，閱讀相關官方參考文件，並訂出一項無害的測試。繼續之前，先儲存確切結果及其適用限制。

如果尋找操作指示最花時間，可以使用 [YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper)，取得你要查核的公開教學影片中現有的時間標記字幕。請先替換範例網址。在檢查擷取結果之前，資料擷取都只能視為待執行的計畫。之後回到影片，自行完成版本檢查。

## 來源與延伸閱讀

- [Python 內建型別：前綴移除與開頭字元移除；於 2026 年 10 月 25 日查核。內容為官方行為說明與版本註記，不是教學測試。](https://docs.python.org/3/builtins/stdtypes.html#str.removeprefix)
- [YouTube Transcript Scraper；於 2026 年 10 月 25 日查核。內容為公開建置版本 0.1.43 的規格，未執行資料擷取，也未測試執行時是否正常運作。](https://apify.com/chronometrica/youtube-transcript-scraper)
- [時間標記逐字稿 Task；於 2026 年 10 月 25 日查核。僅確認公開頁面與 Task ID 存在，未檢查已儲存的輸入或執行情況。](https://apify.com/chronometrica/youtube-transcript-scraper/examples/youtube-timestamped-transcript-json)
- [關於透過 YouTube 學習程式設計的公開提問；發布於 2024 年 11 月 25 日，於 2026 年 10 月 25 日查閱。這只是一則讀者提問，不是需求或成效的證據。](https://www.reddit.com/r/learnprogramming/comments/1gz6km5)