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級是一個兼具競爭力與可達成性的目標,它直接對應了國內許多資訊相關學系的入學門檻,並能顯著提升學生在大學申請過程中的優勢,尤其對於希望進入國立大學的相關科系而言,是個極具價值的目標。