【心得】政府採購專業人員基礎測驗 ❤️ 實戰演練全真模擬考

2021-09-30

本次要介紹的是為了通過「政府採購專業人員基礎測驗」,按照各章節出題比例,從題庫中精選題目所設計的 10 份全真模擬考試題。

本系列為自習政府採購法所記錄的筆記,涵蓋從政府採購法、政府採購法施行細則以及從採購法講義以及題庫中所融會貫通的觀念。經由整理成筆記的方式一來是提升個人準備基礎班證照測驗的學習成效,二來是建立未來可以供查詢的迷你等級採購知識庫。同時藉由軟體工程上的技術,破解、圖解採購法複雜、生硬的法條知識,讓整個學習過程變得更有趣 😏

logo

說明

  • 實際的考題是先進行非選題,再進行選擇題,但建議先完成選擇題,在寫是非題。
  • 實際的考題中,選擇題的答案順序會打亂,所以在準備題庫時要記憶答案而非記憶答案選項。
  • 實際的測驗是使用劃卡的方式,要注意填滿格子並不要超出劃記區域,此外如果有擦除答案,務必要擦除乾淨,但也不能過度用力以免答案破損 😆

答案卡的格式如下:

試題下載

試題下載 包含十回模擬試題。

更新日期:2021-09-30

試題設計程式

import os
import json
import random

os.chdir(r'quebankJsonFolder\')

with open('quesbank.json', 'r', encoding='utf8') as f:
    data = json.load(f)

Exams = {
    '法規': {
        'title': '總論及法規課程',
        'related': [
            # 章節, 是非題數, 選擇題數
            ('政府採購全生命週期概論', 2, 4),
            ('政府採購法之總則、招標及決標', 14, 28),
            ('政府採購法之履約管理及驗收', 2, 4),
            ('政府採購法之罰則及附則', 5, 10)
        ]
    },
    '實務': {
        'title': '實務課程',
        'related': [
            ('工程及技術服務採購作業', 6, 12),
            ('財物及勞務採購作業', 6, 12),
            ('最有利標及評選優勝廠商', 6, 12),
            ('電子採購實務', 6, 12),
        ]
    },
    '其他': {
        'title': '其他課程',
        'related': [
            ('錯誤採購態樣', 2, 4),
            ('投標須知及招標文件製作', 4, 8),
            ('採購契約', 4, 8),
            ('底價及價格分析', 3, 6),
            ('政府採購法之爭議處理', 4, 8),
            ('道德規範及違法處置', 2, 4),
        ]
    }
}

def printAndWrite(filePointer, message):
  print(message)
  filePointer.write(message + '\n')

for S in ['法規', '實務', '其他']:

  是非全 = []
  選擇全 = []

  for subject in Exams[S]['related']:
    print(subject)

    qMatch = [v for v in data.values() if v['category'] == subject[0]]

    是非 = random.sample([v for v in qMatch if v['quesType'] == '是非題'], subject[1])
    選擇 = random.sample([v for v in qMatch if v['quesType'] == '選擇題'], subject[2])

    是非全.extend(是非)
    選擇全.extend(選擇)

  random.shuffle(是非全)
  random.shuffle(選擇全)

  混合 = []
  混合.extend(是非全)
  混合.extend(選擇全)

  outputPath = f'\mocktest\\{S}.txt'
  with open(outputPath, 'w', encoding='utf-8') as f:

    # 問題部分
    for q, tempqno in zip(混合, range(1,100)):
      printAndWrite(f, f'[{tempqno}] {q["question"]}')
      for ano, a in zip([1,2,3,4], q['ansPool']):
        printAndWrite(f, f'{ano}. {a}')
      printAndWrite(f, '')

    # 答案部分
    answerSplitCounter = 1
    for q, tempqno in zip(混合, range(1,100)):
      ansBlock = f'{str(tempqno).zfill(2)}. {q["ans"]} '
      print(ansBlock, end = '')
      f.write(ansBlock)
      if answerSplitCounter % 5 == 0:
        printAndWrite(f, '')
      answerSplitCounter += 1