網頁

2025年8月31日 星期日

TQC+ Python 證照考題評量(二十九)

 一、主題介紹:

列印輸出的統一格式,才能顯示出整齊明瞭的資訊,且讓人看起來清楚不雜亂,這就需要學會如何控制資料顯示的方法,學會了此項絕活就能應用於財務報表、學生成績單、統計數據、會計金融、工程科學、及各種美化輸出...等,今天來透過 TQC+ 考題評量一下學習的成果。

(1) 題目

請撰寫一程式,輸入四個分別含有小數 1 到 4 位的浮點數,然後將這四個浮點數以欄寬為 7 、欄與欄間隔一個空白字元、每列印兩個的方式,先列印向右靠齊,再列印向左靠齊,左右皆以直線 Vertical bar )作為邊界。 (*提示:輸出浮點數到小數點後第二位。)

(2) 輸出輸入

#輸入

四個浮點數

#輸出

格式化輸出

#範例輸入

23.12

395.3

100.4617

564.329

#範例輸出 ( - 為半形字空格 )

|--23.12--395.30|

|-100.46--564.33|

|23.12---395.30-|

100.46--564.33-|


二、程式範例:


1. A = []
2. for i in range(4):
3.     A.append(eval(input()))
4. for i in range(2):
5.     for j in range(0,4,2):
6.         if i==0:
7.             print(f"|{A[j]:>7.2f} {A[j+1]:>7.2f}|")
8.         else:
9.             print(f"|{A[j]:<7.2f} {A[j+1]:<7.2f}|")

#執行結果  










三、程式解說:

第 1 行: 宣告 A 為空串列。

第 2~3 行: 使用 for 迴圈指令將輸入的 4 個浮點數存入 A 串列中。

第 4~9 行: 使用 for 雙迴圈指令將 A 串列資料分別用靠右與靠左條件格式列印輸出。





2025年8月30日 星期六

TQC+ Python 證照考題評量(二十八)

 一、主題介紹:

為了達成程式上的某種功能,絞盡腦汁利用所學到的知識就是要想盡辦法完成它,要完成程式邏輯上的功能有很多種方式,只要能夠達到功能目的就是好方法,今天我們就來完成稍微有點難度的 TQC+ 證照考題。

(1) 題目

請找到一個最長的集合S,S 的定義為S = {A[i], A[A[i]], A[A[A[i]]]...},規則說明如下:

由串列中由一個索引i 開始,S 的第一個元素就是A[i],A[i]的值,作為下一個索引,取得下一個值A[A[i]],由於串列中所有的值都不會超過N,所取到的值必定落在A 之內, 因此最終必定會取到S 中第一個值的索引。請找到最長的S 的集合。

例如:

第1步 輸入5,4,0,3,1,2,6

第2步 轉換為串列[5,4,0,3,1,2,6]

第3步 A[0] = 5

第4步 A[A[0]] = A[5] = 2

第5步 A[A[A[0]]] = A[2] = 0

第6步 A[A[A[A[0]]]] = A[0] = 5

第7步 S = {5, 2, 0}

第5 步得到0,第6 步回到第一個數字,S 的長度就是3,若不能找到長

度大於3 的S,那麼最長的S 長度為3。

(2) 輸入輸出

#輸入

整數字串 ( 半形逗號分隔 )

#輸出

最長 S 的長度

#範例輸入一

5,4,0,3,1,2,6

#範例輸出一

3

#範例輸入二

7,4,0,3,1,2,6,5

4


二、程式範例:


1. s = input()
2. A = [int(x) for x in s.split(',')]
3. S = []
4. n = 0
5. while(True):
6.     S.append(A[n])
7.     n = A[n]
8.     if n==0 :
9.         break
10. print(len(S))

#執行結果

5,4,0,3,1,2,6

3

7,4,0,3,1,2,6,5

4


三、程式解說:

第 1 行: 將輸入的整數字串存入 s 變數。

第 2 行: 將 s 字串值依逗號分開轉換為串列整數資料。

第 3 行: 宣告 S 為空串列。

第 4 行: 初始化 n 為 0。

第 5~9 行: 利用 while 迴圈將 A[n] 附加至 S 串列,直到 n 回到 0 則跳出迴圈。

第 10 行: 列印輸出 S 的長度。




2025年8月29日 星期五

TQC+ Python 證照考題評量(二十七)

 一、主題介紹:

程式邏輯無法使用閱讀的方式來學習,它需要經驗的累積,所以能夠每日都能撰寫小程式功能,1 年 365 天就有 365 篇撰寫小程式的經驗,經過 3 年有破千篇程式,堅持下去相信到時候你會發現自己的與眾不同,接下來我們持續評量 TQC+ 證照考題來學習程式邏輯觀念。

(1) 題目

輸入一字串後,尋找第一個不重複的字元,找到則輸出此字元在字串中的順序位置,若字串中的字元皆有重複,則輸出-1。

(2) 輸入輸出

#輸入

字串

#輸出

第一個不重復字元的位置值,若字串中的字元皆有重複,則輸出 -1。

#範例輸入一

python

#範例輸出一

1

#範例輸入二

codejudger.com

#範例輸出二

5

#範例輸入三

aabbcc

#範例輸出三

-1


二、程式範例:


1. A = list(input())
2. B = 0
3. for i in range(len(A)):
4.     for j in range(len(A)):
5.         if i!=j and A[i]==A[j]:
6.             B = 1
7.             break
8.     if B==1:
9.         B = 0
10.     else:
11.        break
12. if i!=len(A)-1 and B==0:
13.     print(i+1)
14. else:
15.     print(-1)

#執行結果

python

1

codejudger.com

5

aabbcc

-1


三、程式解說:

第 1 行: 將輸入的字串轉換為串列後存入 A 變數。

第 2 行: 初始化變數 B 為 0。

第 3~11 行: 透過一個一個字母的比較,找出第一個沒有重複的字母的位置數。

第 12~15 行: 有不重複的字元列印輸出位置數,如沒有則列印輸出 -1。





2025年8月27日 星期三

TQC+ Python 證照考題評量(二十六)

 一、主題介紹:

輸入一個字串並在字串中尋找所需要的字元,這時常會應用在文字處理與字串分析、單字遊戲、資料驗證與加密、及程式撰寫練習..等之中,今天透過 TQC+ 證照考題來學習在字串中尋找字元的程式邏輯概念。

(1) 題目:

輸入一個字串(不為空值),請找出在這個字串中的中間位置的字元。如果字串長度為奇數,回傳一個字元。若字串長度為偶數,則回傳兩個字元。

(2) 輸入輸出

#輸入

字串

#輸出

字串中間位置的字元

#範例輸入一

test

#範例輸出一

es

#範例輸入二

testing

#範例輸出二

t

#範例輸入三

a

#範例輸出三

a


二、程式範例:


1. A = input()
2. B = list(A)
3. C = len(B)
4. if C % 2 == 1:
5.     print(B[int(C/2)])
6. else:
7.     print("{}{}".format(B[int(C/2)-1],B[int(C/2)]))

#執行結果

test

es

testing

t

a

a


三、程式解說:

第 1 行: 將輸入的字串存入變數 A 中。

第 2 行: 將變數 A 中的字串依每個字母分別轉換為串列資料並存入串列變數 B 中。

第 3 行: 使用 len() 內建函式得知串列變數 B 的長度並存入變數 C 中。

第 4~5 行: 使用 % 取串列資料長度的餘數,如 1 則為基數,就列印輸出中間 1 個字母。

第 6~7 行: 否則,如 0 則為偶數,就列印輸出中間 2 個字母。





2025年8月26日 星期二

TQC+ Python 證照考題評量(二十五)

 一、主題介紹:

寫入與讀取檔案內容是撰寫程式的基本功夫之一,因為此方法的主要目的是將使用者所輸入的資料永久保存在檔案內,隨時要用到都可以讀取檔案內容叫出來利用,更進階的就可以做到資料庫的存取,所以透過 TQC+ 證照考題評量來驗證自己學習的成果。

(1) 題目

請撰寫一程式,要求使用者輸入五個人的名字並加入到data.txt 的尾端。之後再顯示此檔案的內容。

(2) 輸入輸出

#輸入

輸入五個人的名字

#輸出

讀取檔案,輸出此檔案內容

#範例輸入

Daisy

Kelvin

Tom

Joyce

Sarah

#範例輸出

Append-completed!

Content-of-"data.txt":

Ben

Cathy

Tony

Daisy

Kelvin

Tom

Joyce

Sarah


二、程式範例:


1. with open('data.txt','a',encoding='utf-8') as f:
2.     for i in range(5):
3.         name = input()
4.         f.write(name+'\n')
5. with open('data.txt','r',encoding='utf-8') as f:
6.     print(f.read())

#執行結果

Daisy

Kelvin

Tom

Joyce

Sarah

Append completed!

Content of "data.txt":

Ben

Cathy

Tony

Daisy

Kelvin

Tom

Joyce

Sarah


三、程式解說:

第 1 行: 以 utf-8 編碼格式及使用附加寫入模式建立 data.txt 檔案物件。

第 2 行: 將輸入的每一個人名逐一寫入檔案後面。

第 3 行: 以 utf-8 編碼格式及使用讀取模式建立 data.txt 檔案物件。

第 4 行: 讀取檔案內容,並列印輸出。





2025年8月25日 星期一

TQC+ Python 證照考題評量(二十四)

 一、主題介紹:

從空白間格組成的句子中,找出其中我們需要的詞,是可以用在搜尋的功能,幫助我們查找所需要的資訊,譬如:每日記錄股市行情,查找最近的 5 筆資訊。這個功能要如何撰寫,透過 TQC+ 證照考題的練習來學習此項技能。

(1) 題目

請撰寫一程式,讓使用者輸入一個句子(至少有五個詞,以空白隔開),並輸出該句子倒數三個詞。

(2) 輸入輸出

#輸入

一個句子 ( 至少五個詞,以空白隔開 )

#輸出

該句子倒數三個詞 

#範例輸入 ( - 為半形空格 )

Many-foreign-students-study-in-FJU

#範例輸出 ( - 為半形空格 )

study-in-FJU


二、程式範例:


1. sentence = input()
2. datas = sentence.split(' ')
3. dt = ' '.join(datas[-3:])
4. print(dt)

#執行結果

Many foreign students study in FJU

study in FJU


三、程式解說:

第 1 行: 將輸入的句子儲存至變數中。

第 2 行: 將變數內的句子使用空格分別轉換為串列資料。

第 3 行: 將串列資料最後 3 筆使用空白間格合併成一個句子。




2025年8月24日 星期日

TQC+ Python 證照考題評量(二十三)

 一、主題介紹:

很多時候必須將使用者輸入的很多資料暫時儲存在串列中,並做資料的任意顯示方式,如:前 5 筆資料、後 10 筆資料、或排序...等,靈活應用在每個程式是我們學習撰寫程式的絕活,因此藉由這次的 TQC+ 證照考題來增進能力吧 !

(1) 題目

請撰寫一程式,輸入一些字串至數組(至少輸入五個字串),以字串 "end" 為結束點(數組中不包含字串 "end")。接著輸出該數組,再分別顯示該數組的第一個元素到第三個元素和倒數三個元素。

(2) 輸入輸出

#輸入

至少輸入五個字串至數組,直至 end 結束輸入

#輸出

數組

該數組的前三個元素

該數組的後三個元素

#範例輸入

president

dean

chair

staff

teacher

student

end

#範例輸出

('president',-'dean',-'chair'-,'staff',-'teacher',-'student')

('president',-'dean',-'chair')

('staff',-'teacher',-'student')


二、程式範例:


1. in_str = ''
2. datas = ['' for x in range(99)]
3. i = 0
4. while in_str !='end':
5.     in_str = input()
6.     if in_str!='end':
7.         datas[i] = in_str
8.         i += 1
9. datas = [x for x in datas if x != '']
10. datas = tuple(datas)
11. if len(datas)>=5:
12.    print(datas)
13.     print(datas[:3])
14.     print(datas[-3:])
15. else:
16.     print("至少 5 字串!請繼續輸入..")

#執行結果

president

dean

chair

staff

teacher

student

end

('president', 'dean', 'chair', 'staff', 'teacher', 'student')

('president', 'dean', 'chair')

('staff', 'teacher', 'student')


三、程式解說:

第 1 行: 初始化空字串變數。

第 2 行: 初始化空字串的串列序列。

第 3 行: 初始化 i 變數為零。

第 4~8 行: 將輸入的每個字串存入串列變數內,直到輸入 end 才結束。

第 9 行: 刪除串列資料裡的空字串。

第 10 行: 將串列資料 (List) 轉換為序對資料 (Tuple)。

第 11 行: 判斷序對資料長度是否大於 5,如是才執行下面程式。

第 12 行: 列印輸出序對資料。

第 13 行: 列印輸出前三筆序對資料。

第 14 行: 列印輸出後三筆序對資料。

第 15~16 行: 如果所輸入的序對資料小於 5,則列印輸出提示句。





2025年8月23日 星期六

TQC+ Python 證照考題評量(二十二)

 一、主題介紹:

只要需要將資料由亂到整齊都會用到排序功能,時常排序程式應用於資料分析與報表中,將銷售金額、成績單、庫存數量...等由大到小、或由小到大排序,所以學會此排序功能就顯得很重要,我們來透過 TQC+ 證照考題來練習看看自己是否學會了。

(1) 題目

請撰寫一程式,要求使用者輸入十個數字並存放在串列中。接著由大到小的順序顯示最大的3 個數字。

(2) 輸入輸出

#輸入

十個數字

#輸出

由大到小排序,顯示最大的 3 個數字

#範例輸入

40

32

12

29

20

19

38

48

57

44

#範例輸出 ( - 為半形空格 )

57-48-44


二、程式範例:

(1) 方法一


1. datas = [x for x in range(10)]
2. for i in range(10):
3.     datas[i] = eval(input())
4. q = 0
5. while q==0:
6.     q = 1
7.     for j in range(9):
8.         if datas[j] < datas[j+1]:
9.             temp = datas[j]
10.            datas[j] = datas[j+1]
11.            datas[j+1] = temp
12.            q = 0


(2) 方法二


1. datas = [x for x in range(10)]
2. for i in range(10):
3.     datas[i] = eval(input())
4. datas.sort(reverse=True)
5. print(datas[0],datas[1],datas[2])


(3) 方法三


1. datas = [x for x in range(10)]
2. for i in range(10):
3.     datas[i] = eval(input())
4. dt = sorted(datas,reverse=True)
5. print(dt[0],dt[1],dt[2])


# 三種方法執行結果皆相同

40

32

12

29

20

19

38


48

57

44

57 48 44


三、程式解說:

第一種方法使用雙迴圈兩個兩個數字排序,如果相反則將資料對調,這是比較傳統的撰寫程式方法,第二種方式則是使用 sort() 內建函式,可將串列資料直接進行排序,括號內的參數 reverse=False 則為小到大排序,反之設為 reverse=True 則為大到小排序,第三種方式為使用 sorted() 內建函式來進行排序動作,而與 sort() 最大的差別是 sorted() 排序結束需另存新串列,而 sort() 是在原串列變數做排序。


 


2025年8月22日 星期五

TQC+ Python 證照考題評量(二十一)

 一、主題介紹:

迴圈的邏輯撰寫方式時常出現在程式中,如 forwhile..等指令,要怎麼應用?我們就來透過 TQC+ 證照考題來學習這兩個指令的寫法。

(1) 題目

請撰寫一程式,讓使用者輸入兩個整數,接著呼叫函式compute(),此函式接收兩個參數a、b,並回傳從a 連加到b 的和。

(2) 輸入輸出

#輸入

兩個整數

#輸出

從 a 連加到 b 的和

#範例輸入

33

66

#範例輸出

1683


二、程式範例:

(1) 使用 for 方式


1. def compute(a,b):
2.     sum = 0
3.     for i in range(a,b+1):
4.         sum += i
5.     return sum
6.
7. a = eval(input())
8. b = eval(input())
9. print(compute(a,b))

#執行結果

33

66

1683


(2) 使用 while 方式


1. def compute(a,b):
2.     sum = 0
3.     i = a
4.     while i<=b:
5.         sum += i
6.         i += 1
7.     return sum
8.
9. a = eval(input())
10. b = eval(input())
11. print(compute(a,b))

#執行結果

33

66

1683


三、程式解說:

從以上 for 和 while 兩種迴圈方式撰寫程式都可以得到相同正確的答案,那到底這兩種方式如何分辨它們使用的時機?就可以從能不能知道有明確的『次數』、『範圍』或只知道『條件成立』而已來決定使用 for 或 while,也就是說知道 "次數" 或 "範圍" 就使用 for 迴圈,如只知道 " 條件成立" 就使用 while,這樣的區分就很清楚了。



2025年8月21日 星期四

TQC+ Python 證照考題評量(二十)

 一、主題介紹:

數據間取倍數、數量及總和,還有列印輸出格式,這些都長在撰寫程式中會遇到的事,當然程式邏輯有很多寫法都能達到相同功能,只有常練習才能於證照考試中快速臨場反應寫出題目所需要的功能,我們來看看 TQC+ 證照題目的要求。

(1) 題目

請撰寫一程式,讓使用者輸入兩個正整數a、b(a<=b),輸出從a 到b(包含a 和b)之間4 或9 之倍數(一列輸出十個數字、欄寬為4、靠左對齊),以及倍數之個數、總和。

(2) 輸入輸出

#輸入

兩個正整數 a、b ( a<=b )

#輸出

格式化輸出兩個正整數之間 4 或 9 之倍數 ( 包含 a 和 b )

倍數個數

倍數總和

#範例輸入

5

55

#範例輸出 ( - 為半形空格 )

8---9---12--16--18--20--24--27--28--32--

36--40--44--45--48--52--54--

17

513


二、程式範例:


1. a = eval(input())
2. b = eval(input())
3. c = ""
4. row = 0
5. count =0
6. sum = 0
7. for i in range(a,b+1,1):
8.     if i%4==0 or i%9==0:
9.         c += str(i).ljust(4)
10.        row += 1
11.        count += 1
12.        sum += i
13.    if row==10 or i==b:
14.        print(c)
15.        c = ""
16.        row = 0
17. print(count)
18. print(sum)

#執行結果

5

55

8   9   12  16  18  20  24  27  28  32

36  40  44  45  48  52  54

17

513


三、程式說明:

第 1~2 行: 將輸入的兩個字串轉換為數值後存入 a、b 兩個變數。

第 3~6 行: 將 4 個變數 c、row、count、sum 初始化。

第 7 行: 使用迴圈 for 在兩數間內所有正整數執行迴圈內程式。

第 8~12 行: 使用條件式 if 判斷是否為 4 或 9 的倍數,如是則執行 if 內程式。

第 13~16 行: 使用 if 判斷是否 1 行已 10 個數字或已到最後一個數字,如是則執行 if 以內的程式

第 17 行: 列印輸出倍數個數。

第 18 行: 列印輸出倍數總和。




2025年8月20日 星期三

TQC+ Python 證照考題評量(十九)

 一、主題介紹:

撰寫程式最常用到迴圈指令 for 、while...的應用,這也是必須學會的技能,還有時常在列印 print 輸出資料得時候,必須將一筆一筆資料一一對齊,就可以使用靠左對其指令 ljust(),或靠右對齊指令 rjust() ,或置中對齊指令 center(),所以我們來評量相關的 TQC+ 證照考題。

(1) 題目

請使用迴圈敘述撰寫一程式,讓使用者輸入一個正整數(<100),然後以

三角形的方式依序輸出此數的階乘結果。

( 提示:輸出欄寬為4,且需靠右對齊。)

(2) 輸入輸出

#輸入

一個正整數 ( < 100 )

#輸出

以三角形的方式依序輸出此數的階層結果

#範例輸入一

5

#範例輸出一 ( - 為半形空格 )

---1

---2---4

---3---6---9

---4---8--12--16

---5--10--15--20--25

#範例輸入二

12

#範例輸出二 ( - 為半形空格 )

---1

---2---4

---3---6---9

---4---8--12--16

---5--10--15--20--25

---6--12--18--24--30--36

---7--14--21--28--35--42--49

---8--16--24--32--40--48--56--64

---9--18--27--36--45--54--63--72--81

--10--20--30--40--50--60--70--80--90-100

--.11--22--33--44--55--66--77--88--99-110-121

--12--24--36--48--60--72--84--96-108-120-132-144


二、程式範例:


1. num = eval(input())
2. if num<100:
3.     for i in range(1,num+1):
4.         rowdata = ""
5.         for j in range(1,i+1):
6.             rowdata += str(i*j).rjust(4)
7.         print("{}".format(rowdata))

#執行結果

5

   1

   2   4

   3   6   9

   4   8  12  16

   5  10  15  20  25

12

   1

   2   4

   3   6   9

   4   8  12  16

   5  10  15  20  25

   6  12  18  24  30  36

   7  14  21  28  35  42  49

   8  16  24  32  40  48  56  64

   9  18  27  36  45  54  63  72  81

  10  20  30  40  50  60  70  80  90 100

  11  22  33  44  55  66  77  88  99 110 121

  12  24  36  48  60  72  84  96 108 120 132 144


三、程式解說:

第 1 行: 將輸入的字串轉成數值存入變數 num 中。

第 2 行: 依題意先判斷輸入的數值是否為小於 100,如是才能繼續執行程式。

第 3~7 行: 使用雙層迴圈 for~ 建構所要輸出顯示的資料,內迴圈是建立每列的資料儲存至變數 rowdata 中,外迴圈是列印 print 輸出每行資料顯示於螢幕中,並將變數  rowdata 清除後重新進入內迴圈執行下一列程式的儲存。






2025年8月18日 星期一

TQC+ Python 證照考題評量(十八)

 一、主題介紹:

台灣有個傳統習俗,閏年的那個年份會多出1個月,民間傳說這會折損父母的壽命,所以嫁出去的女兒遇到閏年會在閏月的期間,必須攜帶豬腳麵線回娘家,以『呷麵線添福壽,呷豬腳增勇健』的用意,為父母祈求健康長壽、增添福氣。藉有此傳統習俗讓我們來想想,怎麼撰寫 Python 程式自動判斷閏年,接下來看看下面 TQC+ 的證照考題。

(1) 題目

請使用選擇敘述撰寫一程式,讓使用者輸入一個西元年份,然後判斷它是否為閏年(leap year)或平年。其判斷規則為:每四年一閏,每百年不閏,但每四百年也一閏。

(2) 輸入輸出

#輸入

一個正整數

#輸出

判斷是否為閏年或平年

#範例輸入一

1992

#範例輸出一

1992 is a leap year.

#範例輸入二

2010

#範例輸出二

2010 is not a leap year.


二、程式範例:


1. year = eval(input())
2. if year%4==0 and year%100!=0 or year%400==0:
3.     print("{} is a leap year.".format(year))
4. else:
5.     print("{} is not a leap year.".format(year))

#執行結果

1992

1992 is a leap year.

2010

2010 is not a leap year.


三、程式說明:

第 1 行: 將輸入的字串轉換為數值,存入 year 變數內。

第 2~3 行: 判斷如果為 4 的倍數且不為 100 的倍數或為 400 倍數,則列印輸出為一個閏年。

第 4~5 行: 否則即為平年,列印輸出為不是一個閏年。




2025年8月17日 星期日

TQC+ Python 證照考題評量(十七)

一、主題介紹:

Python 程式應用中可以用來做科學工程上計算,譬如:求面積、算距離、解聯立方程式...等,實用、自動化、且快速解答,今天我們就來練習 TQC+ 證照相關考題。

(1) 題目

請撰寫一程式,讓使用者輸入四個數字x1、y1、x2、y2,分別代表兩個點的座標(x1, y1)、(x2, y2)。計算並輸出這兩點的座標與其歐式距離。

(2) 輸入輸出

#輸入

4 個數字,表示 2 個座標位置。

#輸出

座標 1

座標 2

2 個座標距離

#範例輸入

2

1

5.5

8

#範例輸出

2

1

5.5

8

( 2 , 1 )

( 5.5 , 8 )

Distance = 7.8262


二、程式範例:


1. x1 = eval(input())
2. y1 = eval(input())
3. x2 = eval(input())
4. y2 = eval(input())
5. distance = ((x1-x2)**2+(y1-y2)**2)**0.5
6. print("( {} , {} )".format(x1,y1))
7. print("( {} , {} )".format(x2,y2))
8. print("Distance = {:.4f}".format(distance))

#執行結果

2

1

5.5

8

( 2 , 1 )

( 5.5 , 8 )

Distance = 7.8262


三、程式解說:

第 1 行: 輸入座標 x1 轉換為數值,並存入變數 x1 中。

第 2 行: 輸入座標 y1 轉換為數值,並存入變數 y1 中。

第 3 行: 輸入座標 x2 轉換為數值,並存入變數 x2 中。

第 4 行: 輸入座標 y2 轉換為數值,並存入變數 y2 中。

第 5 行: 依據計算距離公式,帶入變數值求解答存入變數 distance 中。

第 6 行: 列印輸出座標 1。

第 7 行: 列印輸出座標 2。

第 8 行: 列印輸出 2 點座標的距離。





2025年8月16日 星期六

TQC+ Python 證照考題評量(十六)

 一、主題介紹:

在撰寫 Python 程式領域中,常常會用到數字進制的轉換,如:二進制轉換為十進制...,人看得懂的數字是十進制,而底層電腦看得懂的是二進制,所以會在這兩個進制間做轉換是很正常的,所以接下來就來評量證照考題,看看自己懂多少。

(1) 題目

請撰寫一個程式,讓使用者輸入一個10字元以內的二進位字串,將其轉換成十進位並輸出。

(2) 輸入輸出

#輸入

一個二進位字串

#輸出

轉換成十進位的結果

#範例輸入

1100

#範例輸出

12


二、程式範例:


1. str = input()
2. array = list(str)
3. if len(array)<10:
4.     sum = 0
5.     for i in range(0,len(array),1):
6.         sum = sum + eval(array[i])*(2**(len(array)-i-1))
7.     print(sum)

#執行結果

1100

12


三、程式說明:

第 1 行: 將輸入的字串存入變數內。

第 2 行: 將字串轉換為串列序列。

第 3 行: 檢查所輸入是否在10字元以內。

第 4 行: 變數初始化。

第 5~6 行: 將二進制數字的每個位元數字分別乘上相對應的權數後加總存入sum。

第 7 行: 列印輸出轉換結果。




2025年8月15日 星期五

TQC+ Python 證照考題評量(十五)

 一、主題介紹:

很多時候於撰寫 Python 程式時應用在登入密碼判斷、資料驗證與表單輸入檢查、資料格式化、加密解密的編碼轉換、...等都需要判斷英文字母大寫寫的功能,所以學習程式中如何判斷字元的大小寫就顯得重要許多,今天我們來看看中華民國電腦技能基金會證照考題的相關評量內容。

(1) 題目

請撰寫一程式,讓使用者輸入一個包含英文大小寫的字串,並依序將字串中的大、小寫字母分離,最後依序輸出字串中的大寫字串、小寫字串及大寫字母的數量。

(2) 輸入輸出

#輸入

一個包含英文大小寫的字串

#輸出

字串中的大寫字串、小寫字串及大寫字母的數量

#範例輸入

ComPuTer

CPT

omuer

3


二、程式範例:


1. str = input()
2. array = list(str)
3. count = 0
4. big_str = ''
5. small_str = ''
6. for ch in array:
7.     if ch.isupper():
8.         big_str = big_str + ch
9.         count= count + 1
10.    elif ch.islower():
11.        small_str = small_str + ch
12. print(big_str)
13. print(small_str)
14. print(count)

#執行結果

ComPuTer

CPT

omuer

3


三、程式說明:

第 1 行: 將輸入一組含有大小寫英文字母的字串存入變數中。

第 2 行: 將字串轉換為串列序列。

第 3 行: 變數初始化為數值 0。

第 4 行: 變數初始化為空字串。

第 5 行: 變數初始化為空字串。

第 6~11 行: 利用 for 迴圈一個一個字元判斷英文大小寫,並分別變數放置及大寫字母計數。

第 12 行: 列印輸出大寫字母的字串變數。

第 13 行: 列印輸出小寫字母的字串變數。

第 14 行: 列印輸出大寫字母的數量。




2025年8月14日 星期四

TQC+ Python 證照考題評量(十四)

 一、主題介紹:

有時候在撰寫 Python 程式中,為了需要符合列印輸出想要的格式,或則為了整齊美觀必須這麼做,所以就得想盡各種方法來完成它,今天就來測驗中華民國電腦技能基金會考題,看看自己是否能完成題目想要的輸出格式。

(1) 題目

請撰寫一程式,讓使用者輸入一個1~9位數的數字,輸出每一個數字相乘的算式及結果。

(2) 輸入輸出

#輸入

一個1~9位數的數字

#輸出

每一個數字相乘的算式及結果

#範例輸入一

57326

#範例輸出一

5*7*3*2*6=1260

#範例輸入二

0

#範例輸出二

0=0


二、程式範例:

(1) 方法一


1. str = input()
2. array = list(str)
3. product = 1
4. for num in array:
5.     product = product * eval(num)
6. if len(array)>0:
7.    s = array[0]
8.     for i in range(1,len(array)):
9.         s = s + '*' + array[i]
10. print(f"{s}={product}")

#執行結果

57326

5*7*3*2*6=1260

0

0=0


(2) 方法二


1. str = input()
2. array = list(str)
3. product = 1
4. for num in array:
5.     product = product * eval(num)
6. s = '*'.join(array)
7. print(f"{s}={product}")

#執行結果

57326

5*7*3*2*6=1260

0

0=0


三、程式說明:

以上兩種方法都可以完成題目想要的結果,不同的是撰寫程式內容的不同,方法一的第6~9行使用傳統邏輯寫法,一個字串循環合併另一個字串,而方法二就厲害了,它在第6行使用了 join 內建函式,將串列資料間字串使用 * 字元隔開合併為一個字串,一行程式就解決題目想要的功能,不但程式簡潔易維護,而且省下了很多時間。




2025年8月13日 星期三

TQC+ Python 證照考題評量(十三)

 一、主題介紹:

Python 程式中有時候需要比較兩個字串是否相同,如果不同則依據 ASCII 碼順序比較兩個字串,看看是字串1大於字串2,還是字串1小於字串2,這個目的是要找出多字串間的順序,很常應用在資料庫中的資料排序、輸入驗證、密碼檢查與加解密、網路解析、檔案格式、字串檢索...等,很多地方都用得到,所以接下來我們來評量中華民國電腦技能基金會的證照考題。

(1) 題目

請撰寫一程式,讓使用者輸入兩個相同長度的字串與一個正整數n,字串長度皆不超過128個字元,依ASCII碼表上的順序比對兩字串前n個字元,最後輸出兩字串前n個字元的比較結果。若使用者輸入正整數n超過字串長度,則輸出「error」。

(2) 輸入輸出

#輸入

兩個相同長度的字串及一個正整數。

#輸出

兩字串前 n 個字元的比較結果(大於、等於、小於)。

#範例輸入一

Apple ipad

Apple ipod

5

#範例輸出一

Apple ipad = Apple ipod

#範例輸入二

Apple ipad

Apple ipod

9

#範例輸出二

Apple ipad < Apple ipod

#範例輸入三

Apple ipad

Apple ipod

15

#範例輸出三

error



二、程式範例:


1. str1 = input()
2. str2 = input()
3. n = eval(input())
4. if len(str1)<=128 and len(str2)<=128:
5.     if n>len(str1) or n>len(str2):
6.         print("error")
7.     else:
8.         sub1 = str1[:n]
9.         sub2 = str2[:n]
10.        if sub1==sub2:
11.            print(str1,'=',str2)
12.        elif sub1>sub2:
13.            print(str1,'>',str2)
14.        else:
15.            print(str1,'<',str2)


#執行結果

#第1組輸入輸出

Apple ipad

Apple ipod

5

Apple ipad = Apple ipod

#第2組輸入輸出

Apple ipad

Apple ipod

9

Apple ipad < Apple ipod

#第3組輸入輸出

Apple ipad

Apple ipod

15

error



三、程式說明:

第 1 行: 將第1組輸入字串儲存至變數 str1。

第 2 行: 將第1組輸入字串儲存至變數 str2。

第 3 行: 將輸入的數字字串轉換為數值儲存至變數 n。

第 4 行: 先判斷輸入值 str1 及 str2 的長度是否不超過128個字元,如是繼續往下執行程式。

第 5~6 行: 判斷輸入的 str1 及 str2 的長度是否大於 n 值,如是則列印輸出 error。

第 8~9 行: 取字串 str1 及 str2 前 n 個字元分別儲存於 sub1 與 sub2。

第 10~15 行: 比較 sub1 與 sub2 的 ASCII 碼大小,分別列印輸出比較結果,





2025年8月12日 星期二

TQC+ Python 證照考題評量(十二)

一、主題介紹:

在撰寫 Python 程式中,我們時常會用到函式 ( function ),它的主要功用是封裝一部份可以重複使用的程式邏輯,讓程式看起來更簡潔、易懂、方便後續維護。譬如:把會重複使用到的一段程式碼包裝在函式內,可以避免要重複用到的程式碼重複做複製貼上的動作,此撰寫程式的方式可以在修改程式邏輯時,只要修改函式一次,即對所有程式有用到函式地方都會更新;而且在建構大程式時,可以依不同功能的小程式分別使用函式將程式模組化,讓程式架構更清楚,這樣的方式就可以讓多人協作更容易,也能更方便可以測試單一功能的程式。所以懂得使用函式來撰寫程式是有非常多的好處,真的有必要花時間學習,因此接下來就來用中華民國電腦技能基金會的證照考題評量看看使用函示撰寫程式的能力。

(1) 題目

請撰寫一程式,包含名為compute()的函式,接收主程式傳遞的一個期中考分數,compute()判斷分數值,若分數在0~100以外,則回傳「-1」;若分數大於等於60,則加5分;否則一律加10分,回傳至主程式輸出。

(2) 輸入輸出

#輸入

一個整數

#輸出

調整後的分數

#範例輸入一

78

#範例輸出一

83

#範例輸入二

120

#範例輸出二

-1


二、程式範例:


1. def compute(score):
2.     if score<0 or score>100:
3.         return -1
4.     elif score>=60:
5.         return score+5
6.     else:
7.         return score+10
8.
9. print(compute(eval(input())))

#執行結果

78

83

120

-1


三、程式說明:

第 1 行: 定義一個函式,並傳入一個變數值。

第 2~7 行: 將傳入整數值作條件式判斷,依符合條件回傳相對應的值。

第 9 行: 此種寫程式的方法是把多個程式集中寫一行程式,可以簡潔快速完成所需要的功能,input 將輸入的字串,使用 eval 傳換為可計算的數值,在傳入到 compute 函式內做條件式的判斷後回傳數值並列印輸出。







2025年8月11日 星期一

TQC+ Python 證照考題評量(十一)

一、主題介紹:

巢狀條件 ( Nested Condition ) 就是在一個條件判斷的區塊程式裡面,再放入另一格條件判斷程式,它的目的是用來處理更細的邏輯分支;程式主要流程是先判斷第一層條件是否成立,如果成立在判斷第二層條件,若再成立則執行最終程式後列印輸出內容;常見用途為專門處理多層次的條件判斷邏輯,如:會員登入資格,先檢查年齡是否符合,再檢查是否有帳號與密碼...等;提醒一下,如果用到此巢狀條件,則需要特別留意它的巢狀層數不要大於三層,否則可讀性就會變差,但可以使用 and 或 or 來減少巢狀結構。 接下來我們來自我評量中華民國電腦技能基金會的證照考題內容。

(1) 題目

請撰寫一程式,讓使用者輸入分數,若分數大於60分,則加10分,否則加5分,最後輸出調整後的分數。若使用者輸入的分數在0~100以外,則輸出「error」。

(2) 輸入輸出

#範例輸入一

70

#範例輸出一

80

#範例輸入二

101

#範例輸出二

error

#範例輸入三

60

#範例輸出三

65



二、程式範例:


1. num = eval(input())
2. if num>=0 and num<=100:
3.     if num>60:
4.         num = num + 10
5.     else:
6.         num = num + 5
7.     print(num)
8. else:
9.     print("error")

#執行結果

70

80

101

error

60

65


三、程式說明:

第 1 行: 將輸入的字串轉換為數值後儲存於變數中。

第 2 行: 使用第一層條件判斷,如成立進入第二層條件判斷,不成立則列印輸出 error。

第 3~6 行: 使用第二層條件判斷,如成立則執行成立程式,不成立則執行不成立程式。

第 7 行: 最後列印輸出結果。 




2025年8月10日 星期日

TQC+ Python 證照考題評量(十)

 一、主題介紹:

如果能撰寫一個程式專門應用在計算購買生活上的任何東西所花費的總費用,那就能做到生活上的自動化,那真的太棒了,今天就來練習中華民國電腦技能基金會證照考題內容囉。

(1) 題目

請撰寫一程式,讓使用者輸入要購買的瓶果汁數量,蘋果汁一瓶單價23.34元,計算總共要花多少錢並輸出至小數點後第二位。

(2)輸入輸出

#輸入

一個自然數

#輸出

總共要花多少錢並輸出至小數點後第二位

#範例輸入

5

#範例輸出

116.70


二、程式範例:

(1) 方法一


1. num = eval(input())
2. sum = num * 23.34
3. print(format(sum,".2f"))

#執行結果

5

116.70


(2) 方法二


1. num = eval(input())
2. sum = num * 23.34
3. print(f"{sum:.2f}")

#執行結果

5

116.70



三、程式說明

第 1 行: 使用 eval 內建函式將輸入的字串轉換為數值。

第 2 行: 將輸入的數值乘上 23.34 儲存到 sum 變數。

第 3 行: 列印輸出結果有兩個使用方法,於方法一中使用了 format 將 sum 格式化為小數點 2 位數;另一方法使用 f" " 格式化變數為小數點 2 位數,兩種方式皆能達成題目的要求。




2025年8月9日 星期六

TQC+ Python 證照考題評量(九)

 一、主題介紹:

於 Python 程式語言中,我們時常需要不同程式語言的資料交換,如: C++ 程式語言資料傳給 Python、或則將 Python 程式語言的資料傳遞給 C++,也都會使用讀寫文字檔 txt 來做兩個程式語言資料的交握,所以今天就來評量如何讀取文字檔 txt。

(1) 題目

 請撰寫一程式,讀取 read.txt 的內容(內容為數字,以空白分隔)並將這

些數字加總後輸出。檔案讀取完成後要關閉。

(2) 輸入輸出

#輸入

讀取 read.txt 的內容(內容為數字,以空白分隔)

#輸出

總和

#範例輸入

#範例輸出

60


二、程式範例:

(1) 文字檔內容 read.txt

12 54 37 128 99 51 33 49 133 47 17

(2) Python 程式


1. File = "read.txt"
2. with open(File,'r',encoding='utf-8') as fobj:
3.    rd = fobj.read().split()
4. sum = 0
5. for data in rd:
6.     sum = sum + eval(data)
7. print(sum)

#執行結果

660


三、程式說明:

第 1 行: 宣告文字檔案變數。

第 2 行: 使用 with~ as~ 開啟檔案讀取模式 ( 可參考之前的文章說明 )。

第 3 行: 使用 read() 讀取檔案內容,使用 split() 依空白分割符號切割回傳串列資料。

第 5~6 行: 使用 for~ in~ 迴圈加總讀取文字檔內數據。

第 7 行: 列印輸出加總值。




2025年8月8日 星期五

TQC+ Python 證照考題評量(八)

 一、主題介紹:

ASCII 為美國資訊交換標準碼 ( 英文全名 American Standard Code for Information Interchange ),它主要功能是將字元轉換為數字的標準碼,最早為美國制定用來讓電腦間的資料可以使用標準格式來交換,是一套編碼的標準,用數字 0~127 對應電腦的英文字母、數字、空白、換行、文字、符號、控制字元、...等,ASCII Code 的用途可以做文字轉換為電腦能理解的數字、資料通訊的標準、字串的比較與排序、控制字元。由此可知 ASCII Code 對於撰寫程式是非常重要的常識,所以此篇文章就讓我們用證照考題來評量自己 ASCII Code 轉換的能力。

(1) 題目

請撰寫一程式,要求使用者輸入一字串,顯示該字串每個字元的對應

ASCII 碼及其總和。

(2) 輸入輸出

#輸入

一個字串

#輸出

依序輸出字串中每個字元對應的 ASCII 碼

每個字元 ASCII 碼的總和

#範例輸入

Kingdom

#範例輸出

ASCII code for 'K' is 75

ASCII code for 'i' is 105

ASCII code for 'n' is 110

ASCII code for 'g' is 103

ASCII code for 'd' is 100

ASCII code for 'o' is 111

ASCII code for 'm' is 109

713


二、程式範例:


1. word = input()
2. letters = list(word)
3. asciicode = ['' for x in range(len(letters))]
4. sum = 0
5. for i in range(0,len(letters)):
 6.   asciicode[i] = ord(letters[i])
 7.   print("ASCII code for '{}' is {}".format(letters[i],
str(asciicode[i])))
 8.   sum = sum + asciicode[i]
9. print(sum)


#執行結果

Kingdom

ASCII code for 'K' is 75

ASCII code for 'i' is 105

ASCII code for 'n' is 110

ASCII code for 'g' is 103

ASCII code for 'd' is 100

ASCII code for 'o' is 111

ASCII code for 'm' is 109

713



三、程式說明:

第 1 行: 接收輸入的字串。

第 2 行: 將字串中的每個英文字母轉換為串列資料。

第 3 行: 宣告一個空串列。

第 4 行: 變數初始值設定。

第 5~8 行: 使用迴圈 for 將串列資料轉換為 ASCII Code 然後列印輸出,並加總每一個 ASCII Code。

第 9 行: 列印輸出 ASCII Code 的加總數值。





2025年8月7日 星期四

TQC+ Python 證照考題評量(七)

 一、主題介紹:

接續自中華民國電腦技能基金會的證照考題來評量看看自己使用 Python 撰寫程式的能力,程式到中將會用之前文章講過的串列 list、序對 tuple 、迴圈 while、定義函式 def、條件 if~else~、排序 sort,請大家可以先自行嘗試撰寫看看,寫出來的程式或許會與此篇文章程式有所不同喔!

(1) 題目

請撰寫一程式,輸入並建立兩組數組,各以 9999 為結束點(數組中不包

含 9999 )。將此兩數組合併並從小到大排序之,顯示排序前的數組和排

序後的串列。

(2) 輸入輸出

#輸入

兩個整數,直至-9999結束輸入

#輸出

排序前的數組

排序後的串列

#顯示

Create tuple 1 :

9

0

-1

3

8

-9999

Create tuple 2 :

28

16

39

56

78

88

-9999

Combined tuple before sorting:  (9, 0, -1, 3, 8, 28, 16, 39, 56, 78, 88)

Combined list after sorting:  [-1, 0, 3, 8, 9, 16, 28, 39, 56, 78, 88]


二、程式範例:


1. def inputData(item):
 2.   sn = ['' for i in range(20)]
 3.   i = 0
 4.   print("Create tuple",item,":")
 5.   while True:
 6.       num = eval(input())
 7.       if num!=-9999:
 8.           sn[i] = num
 9.           i = i + 1
 10.       else:
 11.           break
 12.   newsn = [x for x in sn if x!='']
 13.   return newsn
14.
15.
16. listdata1 = inputData(1)
17. listdata2 = inputData(2)
18. mergedata = listdata1 + listdata2
19. tupledata = tuple(mergedata)
20. print("Combined tuple before sorting: ",tupledata)
21. mergedata.sort()
22. print("Combined list after sorting: ",mergedata)


#執行結果

Create tuple 1 :

9

0

-1

3

8

-9999

Create tuple 2 :

28

16

39

56

78

88

-9999

Combined tuple before sorting:  (9, 0, -1, 3, 8, 28, 16, 39, 56, 78, 88)

Combined list after sorting:  [-1, 0, 3, 8, 9, 16, 28, 39, 56, 78, 88]


三、程式說明:

第 1 行: 使用 def 定義函式。

第 2 行: 宣告串列變數 sn。

第 5~11 行: 接收輸入的串列資料。

第 12 行: 將串列資料內的空字串刪除,並另建新串列。

第 13 行: 回傳新串列資料。

第 18 行: 合併兩個串列資料。

第 19 行: 將兩個合併串列資料轉換為序對 tuple 資料。

第 20 行: 列印排序前的序對資料。

第 21 行: 將合併的串列資料做排序。

第 22 行: 列印排序後的串列資料。




2025年8月6日 星期三

TQC+ Python 證照考題評量(六)

 一、主題介紹:

今天繼續擷取自中華民國電腦技能基金會的證照考題來評量看看自己使用 Python 撰寫程式的能力,程式中將會用到之前文章講過的串列 list 、迴圈 for、定義函式 def,大家可以先自行嘗試撰寫看看,寫出來的程式或許會與此篇文章程式有所不同喔!

(1) 題目

請撰寫一程式,讓使用者輸入 52 張牌中的 5 張,計算並輸出其總和,

提示: JQK 以及 A 分別代表 11 、 12 、 13 以及 1 。

(2) 輸入輸出

#輸入

5 張牌數

#輸出

5 張牌數的數值總和

#範例輸入

5

10

K

3

A

#範例輸出

32


二、程式範例:


1. def calculate():
 2.   num = ['' for x in range(0,5)]
 3.   sum = 0
 4.   for i in range(0,5):
 5.       num[i] = input()
 6.       if num[i]=='J':
 7.           num[i] = '11'
 8.       elif num[i]=='Q':
 9.           num[i] = '12'
 10.       elif num[i]=='K':
 11.           num[i] = '13'
 12.       elif num[i]=='A':
 13.           num[i] = '1'
 14.       sum = sum + eval(num[i])
 15.   print(sum)
16.
17. calculate()


#執行結果

5

10

K

3

A

32


三、程式說明:

第 1 行:使用定義函式方式撰寫程式。

第 2~3 行:宣告串列變數 num 及 sum 變數初始化。

第 4~14 行:使用迴圈指令 for 將輸入的 J、Q、K、A 轉換為 11、12,13、1,並將所有串列加總計算

第 15 行:列印總和

第 17 行:執行函式



2025年8月5日 星期二

TQC+ Python 證照考題評量(五)

 一、主題介紹:

這篇文章要來介紹中華民國電腦技能基金會的試卷編號為 PY3-0001 之第五題的乘積,我們會應用到前篇有講到的函式參數的傳遞方式,及內建的輸入韓式 input()、字串/數值轉換函式 eval(),還有列印函式 print() ,我們來看看這次的題目與評量要求。

(1) 題目

請撰寫一程式,將使用者輸入的兩個整數作為參數傳遞給一個名為

compute(x, y) 的函式,此函式將回傳 x 和 y 的乘積。

(2) 輸入輸出

#輸入兩個整數

56

11

#輸出兩個整數相乘之乘積

616


二、程式範例:


1. def compute(x,y):
 2.   product = x * y
 3.   return product
4.
5. A = eval(input())
6. B = eval(input())
7. C = compute(A,B)
8. print(C)

#執行結果

56

11

616


三、程式說明:

程式中應用了前篇文章有提過的『函式參數的傳遞方式』,有興趣的可以前往閱讀。

第 1 行: 定義一個函式,傳遞兩個參數做相乘的運算,並回傳運算結果。

第 5 行: 將輸入第一個整數值字串轉換為數值後存入A變數。

第 6 行: 將輸入第二個整數值字串轉換為數值後存入B變數。

第 7 行: 將兩格輸入數值參數傳入函式 compute() 中運算相乘結果回傳存入變數C。

第 8 行: 將函式回傳的數值列印出來。



TQC+ Python 證照考題評量(五十四) - 平均溫度

 一、主題介紹: 資料庫中的一堆數據資料,時常需要這些資料的平均值、最大值、與最小值,作為分析資料的依據,如能透過寫程式讓它們自動化就能增加效率,就來看看今天的 TQC+ 考題的練習。 (1) 題目 請撰寫一程式,讓使用者輸入四週各三天的溫度,接著計算並輸出這四週的平均溫度及最高...