小学生蓝桥杯Python闯关 | 平均数、中位数、众数

181 阅读2分钟

学习Python从娃娃抓起!记录下蓝桥杯Python学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:小学生蓝桥杯Python闯关 | 汇总_COCOgsta的博客-CSDN博客


【题目描述】

提示信息: 平均数: 是指在一组数据中所有数据之和再除以这组数据的个数。 如:“1,2,3,4,5”这组数的平均数为3.00。(1+2+3+4+5)/5=3.00

中位数: 将一组数据从大到小排序后,位置在最中间的数值。 分两种情况: 当数据个数为奇数时,中位数为中间的那个数的值; 当数据个数为偶数时,中位数为中间的两个数的平均数。 如: “1,3,5,7,9”这组数据有5个数字,中位数为5; “1,3,5,7”这组数据有4个数字,中位数为4。

众数: 是一组数据中出现次数最多的那个数值。 如:“1,3,5,7,9,9”这组数据9出现的次数最多,故众数为9。

编程实现: 给定一组正整数,然后分行输出这组正整数的平均数,中位数,众数

【输入描述】

输入一组正整数并以一个英文逗号隔开

【输出描述】

第一行输出平均数(保留两位小数) 第二行输出中位数(保留两位小数) 第三行输出众数(如果有多个数值出现的次数相同,则取数值最大的作为众数)

【样例输入】

1,3,5,7,9,9

【样例输出】

5.67 6.00 9

【代码详解】

ls = [int(i) for i in input().split(",")]

avg = sum(ls) / len(ls)
print("%.2f" % avg)

ls = sorted(ls, reverse=True)
# print(ls)
if len(ls) % 2 == 1:
    print("%.2f" % (ls[len(ls)//2]))
elif len(ls) % 2 == 0:
    print("%.2f" % ((ls[len(ls)//2] + ls[len(ls)//2-1]) /2))

cnt = 0
ls2 = []
for i in ls:
    ls2.append(ls.count(i))

max = ls2[0]
ind = 0
for i in range(1, len(ls2)):
    if max < ls2[i]:
        max = ls2[i]
        ind = i
print(ls[ind])

【运行结果】

1,3,5,7,9,9
5.67
6.00
9