一、主題介紹:
每次只要到了選舉的時候都會使用人工計算投票數最高的人當選,這是非常費時且費力的事情,如果撰寫程式使用自動計票得票數最高者當選,應該是非常方便,我們看看如下 TQC+ 考題怎麼說。
(1) 題目
某次選舉有兩位候選人,分別是No.1: Nami、No.2: Chopper。請撰寫一程式,輸入五張選票,輸入值如為1即表示針對1號候選人投票;輸入值如為2即表示針對2號候選人投票,如輸入其他值則視為廢票。每次投完後需印出目前每位候選人的得票數,最後印出最高票者為當選人;如最終計算有相同的最高票數者或無法選出最高票者,顯示【=> No one won the election.】。
(2) 輸入輸出範例
輸入輸出會交雜如下,輸出的部分以粗體字表示。
2
Total votes of No.1: Nami = 0
Total votes of No.2: Chopper = 1
Total null votes = 0
1
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 1
Total null votes = 0
8
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 1
Total null votes = 1
2
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 2
Total null votes = 1
2
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 3
Total null votes = 1
=> No.2 Chopper won the election.
二、程式範例:
1. a = [0 for i in range(3)]
2. for i in range(5):
3. op = eval(input())
4. if op==1:
5. a[0] += 1
6. elif op==2:
7. a[1] += 1
8. else:
9. a[2] += 1
10. print("\033[1m"+"Total votes of No.1: Nami ="+"\033[0m",a[0])
11. print("\033[1m"+"Total votes of No.2: Chopper ="+"\033[0m",a[1])
12. print("\033[1m"+"Total null votes ="+"\033[0m",a[2])
13. result = a.index(max(a)) + 1
14. if a[0]!=a[1] and result==1:
15. print("\033[1m"+"=> No.1 Nami won the election."+"\033[0m")
16. elif a[0]!=a[1] and result==2:
17. print("\033[1m"+"=> No.2 Chopper won the election."+"\033[0m")
18. else:
19. print("\033[1m"+"==> No one won the election."+"\033[0m")
#執行結果
2
Total votes of No.1: Nami = 0
Total votes of No.2: Chopper = 1
Total null votes = 0
1
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 1
Total null votes = 0
8
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 1
Total null votes = 1
2
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 2
Total null votes = 1
2
Total votes of No.1: Nami = 1
Total votes of No.2: Chopper = 3
Total null votes = 1
=> No.2 Chopper won the election.
三、程式解說:
第 1 行: 建立串列初始化為 0。
第 2~12 行: 使用 for 循環迴圈計數 5 次投票紀錄,並列印輸出哪位得票者。
第 13 行: 取得串列數據資料中哪個得票數最高,並存入 result 變數中。
第 14~19 行: 列印輸出投票結果哪位得票最高者,如相同的最高票數者或無法選出最高票者,顯示【=> No one won the election.】。
( 其中 \033[1m = 開啟粗體,\033[0m = 重設格式 )