2023年1月28日 星期六

計概15-11Python程式語言-統測試題

【四技試題】

01.參考Python語言的程式碼,當程式執行完成行號第12行程式碼時,回答下列問題。

 1  D = [1, 0, 0, 1, 3, 1, 1, 2, 3, 1]

 2  C = [0, 0, 0, 0]

 3  A = 0

 4  S = 0

 5  length = 10

 6  for i in range(length):  #i的範圍介於09之間

 7    C[D[i]] = C[D[i]] + 1

 8  for i in range(1, 4)):  #i的範圍介於13之間

 9    if C[i] != 0:  #'x != y'表示x不等於y的條件式

10      A = A + C[i] * 1

11      S = S + C[i] * 1 * i

12  S = S / length - (A / length) ** 2  #'x ** y'表示的y次方運算

A01-1.下列哪一個選項是陣列C的正確內容? (A)[2, 5, 1, 2] (B)[0, 1, 2, 3] (C)[1, 2, 3, 4] (D)[2, 1, 5, 2]

C01-2.下列哪一個選項是變數A的正確內容? (A)3 (B)6 (C)13 (D)16[111管理]

 

02.一個費氏數列定義第一個數為1,第二個數為1,後續的每個數都等於前面兩個數相加,如:1, 1, 2, 3, 5, …。下列是Python程式碼片段,是用來計算費氏數列,其中fun(1)fun(2)皆回傳1,回答下列問題。

1  def fun(n):

2  if (n == 1 or n == 2):

3    return 1

4  else:

5    return 空格

A02-1.為了可以計算第n個費氏數列的數值,圖()中程式行號第5行的空格應填寫下列哪一項表示式(expression) (A)(fun(n1) + fun(n2)) (B)(fun(n) + fun(n1)) (C)(fun(n) + fun(n + 1)) (D)(fun(n + 1) + fun(n + 2))

C02-2.若要求計算fun(5)時,則fun(2)會被重複計算幾次? (A)1 (B)2 (C)3 (D)4[111管理]

 

03.綠色永續大學舉辦程式設計競賽,需要依據各參賽團隊的完成時間長短,將正確解題時間從快到慢顯示在大會成績計分板上面。小蓁使用Python程式語言設計一個排序程式,宣告一數列unsortData代表5組參賽隊伍解題花費的時間,並運用排序演算法進行排序,依據下列的程式片段完成本題組相關問題。

unsortData = [75, 51, 83, 25, 81]  #代表5個參賽團隊的解題時間(分鐘)

def sort(List):  #建立sort函數進行排序

  for j in range( 空格 ):

    flag = True

    for k in range(0, j):

      if List[k] > List[k + 1]:  #相鄰兩數比大小,判斷是否List[k] > List[k + 1]

        flag = False

        List[k], List[k + 1] = List[k + 1], List[k]  #兩數交換

    if flag:

      return List

  return List

printf('original:', unsortData)

sortData = sort(unsortData)  #sortDatasort函數排序後的結果

print ('sorted:', sortData)

A03-1.程式中標示 空格 的程式碼應該要填入下列哪一個參數組合,才能夠正確地將數列的數字由小到大進行排序?range函式用來產生指定範圍內的整數數字序列,例如range(x, y, z)x代表起始值、y代表終止值、z代表間隔值,z值若為1時可省略 (A)4, 0, -1 (B)4, 0, 1 (C)4, -1, 1 (D)4, 1, 1

range(4, 0, -1)4 ~ 0代表5個參賽團隊,-1代表間隔值遞減。

C03-2.此題程式之演算法應屬何種排序法? (A)選擇排序法 (B)插入排序法 (C)氣泡排序法 (D)合併排序法。[112管理]

氣泡排序法:自第一個元素開始,依序將所有元素與次一個元素比較,若順序不對,則互換位置。

 

04.PDCA循環式品質管理是企業界普遍運用的一套「目標管理」流程,透過規劃(Plan)、執行(Do)、查核(Check)、行動(Act)等四階段的循環式管理流程,來確保專案可以達成預設的目標。小旭受託為某企業開發一套PDCA管理軟體,但是在開發的過程中碰到下列程式編寫問題,請您協助小旭解決。

A04-1.小旭被要求使用結構化程式設計(Structured Programming)來開發該套PDCA的循環式管理程式,關於結構化程式設計的說明,下列何者錯誤? (A)每個模組(Module)允許有多個入口及多個出口 (B)選擇(Selection)與重複(Iteration)結構中均有使用條件判斷式 (C)PDCA中的規劃、執行、查核、與行動等四個階段可分為四個個別模組(Module)進行開發 (D)結構化程式設計包含循序(Sequence)結構、選擇(Selection)結構、重複(Iteration)結構等三個子結構。

(A)結構化程式設計的特色:由上而下設計,模組化,只有單入口/單出口,避免使用GOTO指令。

D04-2.小旭決定使用Python語言進行本項專案的程式開發,關於Python程式設計的敘述,下列何者錯誤? (A)程式碼應重視排版,並最好加上註解 (B)變數的命名最好符合專案所規範的規則 (C)有獨立邏輯且很多地方都要執行的程式片段最好寫成函式(Function) (D)為提高程式的可讀性,盡量將多個邏輯判斷敘述寫在同一行程式碼。[112管理]

(D)內縮對齊,可提高程式的可讀性,也強化程式碼的結構。

 

05.使用Python語言進行[11, 3, 4, 35, 2, 8, 7, 3, 6, 9]串列的奇偶數字判斷,如圖所示,其中串列物件的成員函數append(x)會將參數x加入串列的尾端,串列物件的成員函數count(g)會回傳參數g在串列中出現的次數,串列物件的成員函數remove(k)則會移除串列中由左邊起始第一次出現的參數k,回答下列問題。

 1  numbers = [11, 3, 4, 35, 2, 8, 7, 3, 6, 9]

 2  result = [ ]

 3  for num_list in numbers:

 4    if(num_list % 2 != 0):  #判斷num_list是為奇數或為偶數

 5  #%為取整數除法餘數之運算子;!=為判斷不相等之運算子

 6      result.append(num_list)

 7  print(result)

 8

 9  n = result.count(4)  #回傳數字4在串列中出現的次數

10  print(n)

11

12  result.remove(3)  #將數字3在串列中移除一次

13  print(result)

A05-1.當程式執行到行號第10行程式碼完成時,螢幕新增的輸出結果為何? (A)0 (B)1 (C)2 (D)3

C05-2.當程式執行到行號第13行程式碼完成時,螢幕新增的輸出結果為何? (A)[4, 2, 8, 6] (B)[11, 35, 7, 9] (C)[11, 35, 7, 3, 9] (D)[11, 4, 35, 2, 8, 7, 3, 6, 9][112管理]

 

1 def F(A):

2   n = 0

3   c = 0

4   for num in A:

5     if nim >= n:

6       n = num

7       c = c + 1

8   print(c)

9   return n

06.所列程式碼是小華修改自聊天機器人(ChatGPT)所生成的Python語言函數,這個函數可以接受一個輸入串列,並回傳串列中整數的最大值。經過測試後,小華發現對各種可能輸入的整數數值串列,該函數並無法保證每次都能回傳正確的最大值。關於此函數的使用與設計,回答下列題組問題。

D06-1.當小華測試函數呼叫時,下列呼叫何者回傳的數值是錯誤的? (A)F([1, 12, 23, 14, 15]) (B)F([1, -12, -23, -14, -15]) (C)F([1, 12, -23, -14, -15]) (D)F([-10, -12, -23, -14, -15])

B06-2.小華於是思考進行程式除錯,下列修正何者可以排除上述程式錯誤? (A)修改第5行號敘述成為if num < n: (B)修改第2行號敘述成為n = A[0] (C)修改第6行號敘述成為n = num + n (D)修改第2行號敘述成為# n = 0

B06-3.承上題,若小華已經成功對該程式碼完成除錯後,函數呼叫F([-5, -4, -3, -1, -4])完成執行時,該函數已經可以正確回傳最大值為-1,在此次函數呼叫,當執行程式碼至第8行號時,下列何者是變數c所儲存的內容? (A)5 (B)4 (C)3 (D)2[113管理]

 

() [7, 10, 8, 9, 11, 12]

()  1 from random import seed

       2 from random import random

       3

       4 seed(0)

       5 min = 7    #亂數最小值

       6 max = 12   #亂數最大值

       7 num = 6    #欲產生的亂數個數

       8 list = [(min - 1) for i in range(num)]

       9

      10 while num > 0:

      11   #產生新亂數

      12   #random()傳回0.0 <= r < 1.0範圍內的隨機浮點數

      13   r = random()

      14   newRandom = int(r*(max-min+1))+ 空格甲

      15   #檢查新亂數是否重複

      16   repeat = False

      17   for x in list:

      18     if newRandom == x:

      19       repeat = True

      20       break

      21   if repeat:

      22      空格乙

      23   #儲存沒重複的新亂數

      24   list[num-1] = newRandom

      25    空格丙

      26 print(list)

07.小美使用Python語言欲產生整數7~12的不重複亂數序列,輸出結果範例如圖()所示。根據圖()的程式碼,回答下列題組問題。

C07-1.要限制變數newRandom的範圍為7~12的整數, 空格甲 應填寫的程式碼為何? (A)1 (B)num (C)min (D)max

B07-2.空格乙 程式碼的目的是要讓程式立即進入while的下一次迴圈, 空格乙 應填寫的程式碼為何? (A)break (B)continue (C)pass (D)return

A07-3.空格丙 程式碼的目的主要用來正確控制while迴圈的次數, 空格丙 應填寫的程式碼為何? (A)num -= 1 (B)num += 1 (C)num -= min (D)num += min[113管理]