Python统计高于平均分的人数

https://img-mid.csdnimg.cn/release/static/image/mid/ask/183876681966115.jpg

def getC(l): 
    return len([i for i in l if i > (sum(l) / len(l))])

l = list(map(int, input().split()[:-1]))
print(getC(l))
--result
70 80 50 -1
2

img

a = input().split(' ')  # 这里的a是list形式
score = 0
number = 0
if a[0] != '-1':  # 如果输入的值是-1,那么直接去最后面的else输出0

    for i in a:
        i = int(i)  # 这里把i从str变成int格式
        score += i  # score会把之前的数全部加起来
        number += 1  # number统计输入数字个数
    average_score = (score + 1) / (number - 1)
    greater = 0

    for j in a:
        j = int(j)
        if j > average_score:
            greater += 1
    print(greater)  # 同理,可print

else:  # 为什么要把else放在后面和第一个if并列?
    # 不把else放在后面,前面统计number=0,而0作除数时会报错
    print('0')

如有帮助,还请采纳!谢谢!

scores = list(map(int, input().split()[:-1]))
avg = sum(scores)/len(scores)
count = 0
for i in scores:
    if i>avg:
        count += 1
print(count)

函数版本:

def getnumber():
    e=input().split()
    a=list(map(int,e))

    b=len(a)
    a.pop()
    c=0
    for i in range(b-1):
        c+=a[i]
    avg=c / b
    d=0
    for i in range(b-1):
        if a[i] > avg:
            d+=1

    print(d)
# 函数调用
getnumber();

无函数版本:

e=input().split()
    a=list(map(int,e))

    b=len(a)
    a.pop()
    c=0
    for i in range(b-1):
        c+=a[i]
    avg=c / b
    d=0
    for i in range(b-1):
        if a[i] > avg:
            d+=1

    print(d)

img


a = list(map(int, input().split()))
# 创建一个列表,使用 split() 函数进行分割
# map() 函数根据提供的函数对指定序列做映射,就是转化为int

可以根据Python自带的函数处理,很简单。直接上代码。

def getnumber():
    e=input().split()
    d=list(map(int,e))
    b=len(a)
    d.pop()
    c=0
    for i in range(b-1):
        c+=a[i]
    avg=c / b
    d=0
    for i in range(b-1):
        if a[i] > avg:
            g+=1
    print(g)
# 通过调用getnumber函数直接处理
getnumber();
def get_count(data):
    # 求平均值sum求和,len求长度
    avg = float(sum(data)) / len(data)
    count = 0
    # 统计所有超过平均数的分数个数,遍历
    for i in data:
        if i > avg:
            count += 1
    return count


if __name__ == '__main__':
    # 获取输入数据,按空格分隔,剔除-1那条数据
    data = input().split()[:-1]
    # 将所有的字符串转换为数字
    data = [int(i) for i in data]
    # 调用函数打印结果
    print(get_count(data))

函数实现~~

def cal_count(score_list):
    sum = 0
    count = 0
    for i in score_list:
        sum += float(i)
    avg = sum / len(score_list)
    for i in score_list:
        if float(i) > avg:
            count += 1

    return count

if __name__ == "__main__":
    score_list = [int(score) for score in input().strip().split()[:-1]]
    count = cal_count(score_list)
    print(count)

一个循环计算平均分,接着一个循环判定各个学生分数是否超过平均分,超过时,输出数加一,然后输出,结束。

## python3
if __name__ == '__main__':
    ### 70 50 80 -1
    a = input('请输入学生分数:')
    print(a)
    scores = list(filter(lambda x: x != -1, list(map(int, a.split(" ")))))
    print(scores)
    count = len(list(filter(lambda x: x > sum(scores) / len(scores), scores)))
    print(count)

img