2025年6月25日 星期三

python 縮格練習

 n =int(input())

s = list(range(n))

f = [int(i) for i in input().split()]


print(s)

print(f)

print()


print('正確')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]

  

    print(g)


print('錯誤1')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]

  

      print(g)


print('錯誤2')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]

  

  print(g)


print('錯誤3')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]


print(g)


10

4 7 2 9 6 0 8 1 5 3


STDIN

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[4, 7, 2, 9, 6, 0, 8, 1, 5, 3]


Output:

正確

[0, 4, 6, 8, 5]

[1, 7]

[2]

[3, 9]

錯誤1

[0]

[0, 4]

[0, 4, 6]

[0, 4, 6, 8]

[0, 4, 6, 8, 5]

[1]

[1, 7]

[2]

[3]

[3, 9]

錯誤2

[0, 4, 6, 8, 5]

[1, 7]

[2]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

錯誤3

[3, 9]


2025年6月24日 星期二

小群體-拆解逐步完成版

 ss = [0,1,2,3,4,5,6,7,8,9]

f = [4, 7, 2, 9, 6, 0, 8, 1, 5, 3]


# 1:找到第一群'

# g = []

# cur = 0

# while cur not in g:

#   g.append(cur)

#   cur = f[cur]

# print(g)


# 2:'找到每一群'

# for s in ss:

#   g = []

#   cur = s

#   while cur not in g:

#     g.append(cur)

#     cur = f[cur]

#   print(g)


# 3: '找到每一群,去重覆群'

# v = []

# for s in ss:

#   g = []

#   cur = s

#   if s not in v:

#     while cur not in g:

#       g.append(cur)

#       v.append(cur)

#       cur = f[cur]

#     print(g)

    

# 4: '找到每一群,去重覆群,算出共幾群'

v = []

gs = []

for s in ss:

  g = []

  cur = s

  if s not in v:

    while cur not in g:

      g.append(cur)

      v.append(cur)

      cur = f[cur]

    print(g)

    gs.append(g)

print('共',len(gs),'群')


Output:


[0, 4, 6, 8, 5]

[1, 7]

[2]

[3, 9]

共 4 群

2025年6月20日 星期五

高中一年級新生準備 APCS準備計畫

 1. 了解 APCS 的重要性與目標設定

  • 升學優勢:APCS 成績已被多所大學(包含臺灣大學、清華大學、陽明交通大學、成功大學等頂尖大學的資工系)納入入學審查與甄選加分依據。參與 APCS 檢測並取得成績,能為學生在大學個人申請中,透過 APCS 組、資安組或特殊選才,大大增加進入理想資訊相關科系(如資工系、資管系)的競爭力與選擇。
  • 目標設定:若以大學升學為導向,建議至少考取 APCS 實作三級,這在特殊選才中已有機會申請上國立後段資工系。若能達到實作四級,更有機會透過特殊選才錄取中字輩資工系。考量到大學資訊系課程的嚴謹度(例如,有教授可能當掉70%的學生),提前準備 APCS 有助於銜接大學課程。

2. 基礎程式能力建立(高中一年級上學期)

  • 程式語言選擇Python 是最推薦的入門語言。Python 語法簡潔、易讀性高,且是全球最受歡迎的程式語言,特別在人工智慧和資料科學領域廣泛應用。從 2025 年起,APCS 的「程式識讀」和「程式實作」都新增了 Python 語言選項,這意味著考生若熟悉 Python,便能應付所有模組的測驗。
  • 學習內容
    • Python 基礎語法與觀念:學習變數、資料型態、運算子、輸入/輸出、條件判斷(選擇)和迴圈(重複)等程式流程控制。
    • 常用容器:掌握列表(list)等資料結構的基本使用。
    • 函式:了解函式的定義與呼叫,初步建立模組化概念。

3. 進階程式能力與解題思維(高中一年級下學期至二年級)

  • 強化邏輯與問題解決能力:APCS 檢測旨在訓練學生的邏輯思維與問題解決能力。課程應培養學生「從拆解、分析,到解決複雜問題」的能力。
  • 擴展程式語言能力:雖然主要學習 Python,但觀念題可能涉及 C/C++。因此,建議花時間學習「讀懂」C 語言,這有助於應對觀念題型。有些培訓課程會提供程式語法轉換的教學。
  • 學習進階資料結構與演算法:這是 APCS 的核心考點。
    • 基礎資料結構:深入學習佇列(queue)、堆疊(stack)、陣列(array)、字元(character)、字串(string)等。
    • 基礎演算法:學習排序(sorting)、搜尋(searching,如二分搜尋 binary search、深度優先搜尋 DFS)等。
    • 進階概念:函式、遞迴、樹狀圖(tree,如二元樹)、圖形(graph,如網格)、枚舉(enumeration)、資料遍歷(traversal)等。
    • 高階演算法:對於目標高級的學生,還需學習動態規劃(dynamic programming)、分治法(divide and conquer)、貪心法則(greedy method)等。

4. 實戰演練與應試技巧(高中二年級至三年級)

  • 考古題練習:充分利用 APCS 歷屆考古題庫進行實作練習,例如 Yui Huang 筆記中提供了從 2016 年到 2025 年的考古題。
  • 模擬測驗:透過實作模擬檢定當時的狀況,加強學生記憶與應試能力。
  • 題型分析與解題技巧:針對「程式識讀」的程式運行追蹤、填空、測試除錯、效能分析、計算邏輯解析,以及「程式實作」的撰寫完整程式或副程式等題型進行專項訓練,從技巧觀念、例題實作到挑戰題,由簡入難提升解題策略。
  • 理解新制實作分級與報名策略
    • 從 2025 年起,「程式實作」改採等級制檢定,分為初級、中級、中高級、高級四個等級。
    • 學生需根據自身目標級分,選擇對應的檢測等級報名。例如,若目標為三級分,可報考中高級(100-149 分)或中級(150-300 分)。若報考的測驗等級錯誤,即使獲得滿分也無法得到理想級分,因此務必注意選測等級的重要性。

5. APCS 考試時程規劃

  • 考試頻率增加:自 2025 年起,APCS 檢定次數增加至每年 6 次,分別於 1 月、3 月、6 月、7 月、10 月、11 月舉辦,這提供了學生更大的考試彈性,可以根據學習進度安排應試時間。
  • 科目報考時間
    • 程式識讀:每次檢測月份皆可報考,並有 C/C++ 或 Python 程式語言的檢測題目供選擇。
    • 程式實作:不同等級舉辦月份不同,其中初級與中級舉辦月份較多(5 次),中高級為 3 次,高級為 2 次。

6. 綜合能力與視野提升

  • 拓展科技視野:除了程式技術,應積極了解人工智慧、區塊鏈、5G、VR、AR、駭客思維、創新創業等最新的科技趨勢與思維模式。這不僅能開拓視野,也能在大學面試時與教授進行深入交流。
  • 培養軟實力:除了學業,也建議高中生多探索不同科系領域,並參與球隊、興趣性社團等,培養運動習慣、社交能力和興趣。這些多元發展對於長遠人生和解決問題的能力都有助益。

2025 新制 APCS 重點整理

APCS(大學程式設計先修檢測)是由教育部指導、臺師大資工系執行的全國性程式設計檢定,主要評量高中職學生在邏輯推理、演算法思維與程式撰寫能力的表現,並成為各大學資訊相關科系參採的重要升學依據。目前已有超過 30 所大學、80 多個科系納入 APCS 成績,包括台大、清大、交大與成大等頂尖學校。

APCS 分為兩部分:程式識讀(筆試)與 程式實作(電腦上機)。2025 年起的新制 APCS有三大關鍵改變:

  1. 考試次數加倍:由原本每年 3 次(1月、6月、10月)調整為 每年 6 次(新增 3月、7月、11月),提供學生更高的彈性安排,並降低單次壓力。

  2. 語言選擇與實作分級

    • 程式識讀新增 Python 語言,讓初學者有更親切的選擇。

    • 程式實作改採 等級制檢定,分為初級、中級、中高級與高級。考生須依照目標級分選擇相應等級,若報考較低等級,即使拿滿分也無法獲得高級分。

  3. 成績更具辨識力:程式實作除了 1~5 級分外,還會列出原始分數與報考等級,使大學更能掌握學生的實際能力,有利於備審資料與面試表現。

準備建議

  1. 建議考生可專注學習 Python,並搭配資料結構(陣列、堆疊、佇列、樹、圖)與演算法(排序、搜尋、遞迴、動態規劃等)系統訓練。
  2. 配合歷屆題型、模擬練習及錯題整理,有助於提升解題技巧與應試信心。


APCS 7級必勝秘笈:學習、練習、突破|觀念題C+實作題Python


https://www.books.com.tw/products/0011004302?sloc=main

APCS 7級必勝秘笈:學習、練習、突破|觀念題C+實作題Python

AI 提問 X 學習 X 應用

 https://www.books.com.tw/products/0011022505?sloc=main


AI 提問 X 學習 X 應用:ChatGPT、NotebookLM、Gemini、GitHub Copilot從零到完全實戰

目標設為 APCS 「程式識讀」4級分、「程式實作」3級分

 目標設定為 APCS 「程式識讀」4級分及「程式實作」3級分,主要是基於大學入學的實質需求、考試的策略性考量以及學習的可達成性

以下是詳細的解釋:

  1. 對應大學校系的錄取門檻

    • 根據來源資料,許多大學資訊相關科系在採計 APCS 成績時,觀念題和實作題會設有不同的級分門檻。
    • 「程式識讀」4級分(分數範圍 70-89 分)搭配「程式實作」3級分(報考中級檢定並獲得 150-300 分,或報考中高級檢定並獲得 100-149 分),這個組合是許多國立大學資訊相關科系的篩選標準
    • 具體來說,國立中山大學電機工程學系、國立中興大學資訊工程學系、國立彰化師範大學資訊工程學系、國立成功大學工業與資訊管理學系、國立政治大學資訊科學系、國立臺北大學資訊工程學系,以及國立臺灣師範大學資訊工程學系等,都將「程式識讀」4級分和「程式實作」3級分納為其 APCS 組的篩選門檻。這表示達成這個目標,能大幅增加進入這些大學的機會。
  2. 提升升學競爭力與入學選擇

    • 擁有 APCS 成績能「大大增加孩子的競爭力與入學選擇」,讓學生「不用在一般的入學管道裡和他人擠破頭,而是靠 APCS 成績脫穎而出」。
    • 透過 APCS 成績申請大學資訊科系,甚至可能讓學測成績最多可差到 8 級分,有助於學生「前進理想大學」。
    • 達到「程式實作」三級分,對於一般組的第二階段甄試有「絕對優勢,幾乎是保證錄取」,即便不是透過 APCS 組入學,也能在備審資料和面試中展現程式能力。
    • APCS 成績也為學生開啟了更多升學管道,如 APCS 組、資安組或特殊選才。
  3. 務實且可達成的目標

    • 從歷屆成績統計來看,「程式實作」三級分的人數比例約為 20.5%。相較於四級分(2.7%)和五級分(0.8%)的比例,三級分是一個相對較易達成但仍具備競爭力的目標
    • 「APCS實作三級難度不高」。這在系統學習下是可實現的。
    • 設定觀念題4級、實作題3級,可以讓學生在學習上更有方向性,避免好高騖遠,同時又能符合多數採計校系的需求,是一個策略性的分數組合。

總結來說,觀念題4級、實作題3級是一個兼具競爭力與可達成性的目標,它直接對應了國內許多資訊相關學系的入學門檻,並能顯著提升學生在大學申請過程中的優勢,尤其對於希望進入國立大學的相關科系而言,是個極具價值的目標。

APCS「程式實作」三級分準備要領

 您好!針對 APCS「程式實作」取得三級分的準備要領,以下將根據提供的資料為您詳細說明:

1. 了解「程式實作」三級分的定義與要求

自 114 學年度(2025 年)起,APCS 檢定「程式實作」科目引入了分級選擇。若您的目標是「程式實作」三級分,您可以透過以下兩種方式達成:

  • 報考中級檢定,並獲得 150-300 分的成績。
  • 報考中高級檢定,並獲得 100-149 分的成績。

這表示您需要對中級或中高級所涵蓋的程式設計能力有紮實的掌握。值得注意的是,如果選擇了不符合自己程度的等級,即使取得高分也可能無法獲得理想的級分,例如報考中級並獲得滿分 300 分,也只能得到三級分。

2. 「程式實作」中級與中高級的檢測範圍

「程式實作」主要檢測考生撰寫完整程式或副程式的能力。針對三級分的目標,您需要掌握中級與中高級所要求的內容:

  • 中級檢測範圍
    • 基礎程式設計能力:能使用變數儲存與操作資料,利用選擇控制進行選輯判斷,並透過迴圈控制處理重複性任務。
    • 序列型資料結構運用能力:能夠以序列型資料結構(如陣列列表)來儲存與處理資料,並進行文字處理流程模擬
    • 具體內容包括:輸入與輸出、算術運算、邏輯運算、位元運算、條件判斷與迴圈、陣列、字元、字串。
  • 中高級檢測範圍
    • 基礎資料結構運用能力:能夠利用基礎資料結構與演算思維來解決問題。
    • 具體內容包括:函式遞迴佇列 (queues)堆疊 (stacks)
    • 簡單結構的樹狀圖 (tree)(例如:二元樹)以及簡單結構的圖 (graph)(例如:網格)。
    • 枚舉 (enumeration)資料遍歷 (traversal)搜尋 (search)(例如:二分搜尋 (binary search)深度優先搜尋 (depth-first search, DFS))。

3. 準備要領

要有效準備「程式實作」三級分,建議採取以下策略:

  • 選擇主要學習語言
    • 自 114 學年度(2025 年)起,「程式實作」除了 C/C++,也提供了 Java 和 Python 程式語言供選擇。
    • Python 語法簡潔、易讀性高,且更符合學界與程式設計的學習趨勢,尤其在 AI 和資料科學領域受到重視,非常適合初學者。橘子蘋果學苑和愷哥程式都主要以 Python 進行教學。
  • 紮實掌握基礎程式語法與邏輯
    • 透徹理解變數、資料型態、運算子、條件判斷(選擇)、迴圈(重複)、函式、遞迴、陣列和字串等核心概念。這是所有程式解題的基礎。
  • 學習並應用基礎資料結構
    • 重點學習堆疊 (stack)佇列 (queue) 的原理與操作,並練習如何應用它們來解決問題。
  • 理解基礎演算法
    • 熟練排序 (sorting)搜尋 (searching) 的基本演算法。二分搜尋和深度優先搜尋 (DFS) 是中高級的重要考點。
    • Yui Huang 演算法學習筆記也提供了排序和搜尋的相關筆記。
  • 大量練習歷屆考古題與模擬試題
    • APCS 歷屆考古題是準備的黃金資源。Yui Huang 演算法學習筆記提供了從 2016 年 3 月到 2025 年 6 月的歷屆考古題,包含題目、題解和命題範圍,並連結至 ZeroJudge 測試平台供練習。
    • 練習時,應注重培養問題分析與解題思維,學會如何拆解問題、分析程式邏輯、判斷效能並找出錯誤.
  • 善用學習資源與培訓課程
    • Yui Huang 演算法學習筆記:提供了詳細的命題範圍筆記和推薦學習教材,例如吳邦一教授的「PythAPCS123-Python 程式設計從 APCS 實作 1 級到 3 級」。

透過上述準備要領,並善用這些豐富的學習資源,您將能有效提升「程式實作」的能力,並達成三級分的目標。

「程式識讀」四級分準備要領

 程式識讀的四級分對應的分數範圍是 70-89 分

以下是針對 APCS「程式識讀」取得四級分的準備要領:
1. 了解「程式識讀」的考試內容與評量重點
「程式識讀」主要檢測考生的運算思維、程式設計解析與問題解決能力。考試時間為90 分鐘,以選擇題方式命題
檢測範圍涵蓋以下內容
基礎語法與概念
資料型態 (data types)、常數 (constants)、變數 (variables)、指定 (assignment)、表達式 (expressions)
控制結構 (control structures):循序 (sequence)、選擇 (selection) 及重複 (repetition)
函式與模組化 (functions and modularity)
遞迴 (recursion)
陣列與串列 (arrays and lists)
基礎資料結構
佇列 (queues)
堆疊 (stacks)
自訂資料型態
基礎演算法
排序 (sorting)
搜尋 (searching)
檢測題型包括
程式運行追蹤 (code tracing)
程式填空 (code completion)
程式測試與除錯 (code testing and debugging)
程式效能分析 (code performance analysis)
解析計算邏輯 (computational logic analysis)
自 114 學年度(2025 年)起,「程式識讀」的檢測語言除了 C/C++ 外,也新增了 Python 程式語言供考生選擇
2. 準備要領
為了在「程式識讀」中取得四級分,以下是具體的準備策略:
選擇主要學習語言並兼顧閱讀能力
雖然您可以選擇 C/C++ 或 Python 題本,但 Python 因其語法簡潔、易讀性高,更適合初學者
即使選擇 Python,部分培訓課程(例如橘子蘋果和愷哥程式)仍會提供程式語法轉換課程,教導學生閱讀 C/C++ 的題目,以應對觀念題的潛在需求
紮實掌握基礎程式語法與邏輯概念
務必透徹理解變數、資料型態、運算子、條件判斷、迴圈、函式、遞迴、陣列與字串等核心概念.。
這些是程式設計的基石,也是「程式識讀」中程式運行追蹤、填空等題型的基礎
深入學習基礎資料結構與演算法
熟練堆疊 (stack) 和佇列 (queue) 的操作與應用
掌握排序 (sorting) 和搜尋 (searching) 的基本演算法,例如二分搜尋 (binary search) 等
大量練習歷屆考古題與模擬試題
APCS 歷屆考古題是最佳的練習資源。Yui Huang 演算法學習筆記網站提供了從 2016 年 3 月到 2025 年 6 月的歷屆考古題,包含題目、題解和命題範圍
透過練習,熟悉題型(如程式運行追蹤、除錯等)並掌握解題技巧
練習在 ZeroJudge 等線上解題平台提交程式碼,熟悉評測系統
培養問題分析與解題思維
「程式識讀」著重於運算思維、程式設計解析與問題解決能力
練習拆解問題、分析程式邏輯、判斷程式效能,並找出潛在錯誤
3. 參考學習資源與培訓課程
Yui Huang 演算法學習筆記
提供 APCS 命題範圍的詳細內容,包括 C++ 基礎語法、基礎資料結構(佇列、堆疊、樹狀圖、圖形)、基礎演算法(排序、搜尋、貪心法則、動態規劃)等筆記
提供 APCS 歷屆考古題庫,並連結至 ZeroJudge 測試平台
推薦多本優質學習教材,如吳邦一教授的「PythAPCS123-Python 程式設計從 APCS 實作 1 級到 3 級」和「AP325-從 APCS 實作題檢測三級到五級」

「演算實作」部分則涵蓋演算法與資料結構概論、陣列、鏈結串列、堆疊、佇列、排序、搜尋、枚舉、分治、樹結構、圖形結構、貪婪演算法與動態規劃
善用這些學習資源,將能有效提升「程式識讀」的能力,並達到四級分的目標。