大于均值元素习题改错计算形参x所指数组中N个数的平均值(规定所有数均为正数)作为数值返回;并将大于平均值的数放在形参y所指数组中在主函数中输出

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/4

img


63347970786189.jpg "#left")

先看结果:

img

在看代码:

#202361818:11:00
N = 10

def fun(x: list, y: list) -> float:

# 求和
    sum = 0
    for num in x:
# 累加求和
        sum += num
# 计算平均值
    av = sum / N

# 将大于平均值的元素存入y列表
    j = 0
    for i in range(N):
        if x[i] > av:
# 大于平均值的元素存入y列表
            y[j] = x[i]
            j += 1
# 返回平均值
    return av

# 输入x列表元素
x = eval(input())
# y列表初始为空
y = [None] * N
# 调用fun函数得到平均值av和y列表
av = fun(x, y)

# 打印y列表元素
i = 0
while y[i] != None:
    print("%5.1f" % y[i], end="")
    i += 1

这链接看不到

  • 以下回答由chatgpt基于相关博客总结生成:
    def above_average(x, y):
        avg = sum(x) / len(x)
        result = []
        for i in x:
            if i > avg:
                result.append(i)
        y.extend(result)
        return result
    
    if __name__ == '__main__':
        x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        y = []
        above_avg = above_average(x, y)
        print("Above average numbers:", above_avg)
        print("Numbers in Y array:", y)
    

    首先,在函数中计算给定list x 的平均值 avg。然后将大于平均值的数添加到结果list result 中。将结果list result 追加到给定list y 中,并返回结果list result

    在主函数中,定义输入数据 x 和一个空的输出list y,将它们传递给函数 above_average。最后输出大于平均值的数,并输出 y list 中的数。


没必要搞那么复杂,按你的逻辑可这么写:
def fun(x: list, y: list):
    av = sum(x) / len(x)
    return [x[i] if x[i] > av else y[i] for i in range(N) ]
x = list(map(int, input().split()))
N = len(x)
y = [None] * N
y = fun(x, y)
i = 0
while i < N :
    if y[i] != None:        
        print("%5.1f" % y[i], end = '')
    i += 1
简化的写法可以用下面的:    
def fun1(x: list):
    av = sum(x) / len(x)
    return [i for i in x if i>av]

x = list(map(int, input().split()))
y = fun1(x)
print(''.join(map(lambda x: "%5.1f" % x, y)))

根据你题目的要求,要先在函数中求数组 x的均值,那就先要求和在计算均值:

avg = sum(x)/len(x)
return avg

然后就是将大于avg的值放入y数组中:

  j = 0
    for i in range(N):
        if x[i] > avg :
            y[j] = x[i]
            j += 1

链接看不到,有报什么错误提示么


def average(x, y):  
     sum = 0
     n = len(x)
     for i in range(n):
          sum += x[i]
     avg = sum / n
     
     j = 0
     for i in range(n):
          if x[i] > avg:
               y[j] = x[i]  
               j += 1
     return avg

x = [1,2,3,4,5,6]
n = len(x)
y = [0] * n   
avg = average(x, y) 
print("平均值为:",avg)
print("大于平均值的数为:",y)

小小代码思路,定义一个greater_than_average函数,它接收两个整数数组x和y,以及一个整数n作为参数。函数首先计算数组x中所有数的和,然后计算平均值。接下来,它将大于平均值的数复制到数组y中。最后,在主函数中调用greater_than_average函数,并输出结果。

#include <stdio.h>  
  
void greater_than_average(int x[], int y[], int n) {  
    int i, sum = 0;  
    float avg;  
  
    // 计算所有数的和  
    for (i = 0; i < n; i++) {  
        sum += x[i];  
    }  
  
    // 计算平均值  
    avg = (float)sum / n;  
  
    // 将大于平均值的数放入y数组  
    for (i = 0; i < n; i++) {  
        if (x[i] > avg) {  
            y[i] = x[i];  
        }  
    }  
}  
  
int main() {  
    int x[] = {10, 20, 30, 40, 50};  
    int y[5];  
    int n = 5;  
  
    greater_than_average(x, y, n);  
  
    // 输出结果  
    printf("大于平均值的数为:");  
    for (int i = 0; i < n; i++) {  
        if (y[i] != 0) {  
            printf("%d ", y[i]);  
        }  
    }  
  
    return 0;  
}

#如有帮助,恭请采纳