b374: 求众数
这篇教学会示范 ZeroJudge 基础题库“b374: [福州19中]众数”的解题过程。
题目需求
题目会提供一万个以内的数字,数字范围为 1~30000,透过程序求出这些数字的众数 ( 出现最多次的数字 ),并列出众数出现的次数。
题目链接:b374: [福州19中]众数
解答
这题可以使用 Python collections 标准函数库里的 Counter 方法求出每个数字出现的次数,接着只要抓出最多次的数字,再透过排序,就能得到最后的结果。
from collections import Counter # 載入 collections 函式庫的 Counter
while True:
try:
n = int(input()) # 有幾個數字
num = [int(i) for i in input().split()] # 將輸入的文字轉換成數字串列
a = Counter(num) # 計算每個數字出現的次數,轉成字典的型態
b, c = [], [] # 建立兩個空串列,記錄數字以及排序使用
for key in a:
b.append(a[key]) # 將所有的次數存入串列中
m = max(b) # 取出數字裡的最大值 ( 眾數的次數 )
for key in a:
if a[key] == m: # 如果該數字的次數等於最大值
c.append(key) # 將該數字存入 c 串列
c.sort() # 排序
for i in c:
print(f'{i} {m}') # 印出結果
except:
break
微信扫码关注
抖音扫码关注