一、主題介紹:
接續自中華民國電腦技能基金會的證照考題來評量看看自己使用 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 行: 列印排序後的串列資料。