gpt4 book ai didi

python - (对于循环): How to put average values beside each number of the corresponding avg value and print the number(s) with the highest average?

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:22 26 4
gpt4 key购买 nike

我的代码:

name = ["AAAAA 4 2 1 2 4 2 4 4 5 2 2 1 5 2 4 3 1 1 3 3 5",
"BBB 5 2 1 2 4 5 4 4 1 2 2 2 4 4 4 3 1 2 3 3 2",
"K 4 1 2 1 2 1 2 5 1 1 1 1 4 2 2 1 5 1 3 4 1"]

count = 0
for line in name:
for char in line:
if char.isdigit():
count += 1
final_count = int(count/len(name)) # 21

# count --->63
# print(len(name))--> 3 which gives the below number,
# print(final_count)--> 21


name = [name[i].split(" ") for i in range(len(name))]
for i in range(1, len(name[0])):
bb = (int(name[0][i])+int(name[1][i])+int(name[2][i]))/len(name)


for i in range(1, final_count+1):
print(i,bb)

输出:错误!

1 2.6666666666666665
2 2.6666666666666665
3 2.6666666666666665
4 2.6666666666666665
5 2.6666666666666665
6 2.6666666666666665
7 2.6666666666666665
8 2.6666666666666665
9 2.6666666666666665
10 2.6666666666666665
11 2.6666666666666665
12 2.6666666666666665
13 2.6666666666666665
14 2.6666666666666665
15 2.6666666666666665
16 2.6666666666666665
17 2.6666666666666665
18 2.6666666666666665
19 2.6666666666666665
20 2.6666666666666665
21 2.6666666666666665

我的问题:如何将下面显示的正确输出放置在每个数字旁边,最多为 21?并打印最大平均值,例如,1 和 2 的平均值最高,我如何打印 1 和 2?

右侧的正确值:

# After changing the line bb = (int(name[0][i])+int(name[1][i])+int(name[2][i]))/len(name) 
to
print((int(name[0][i])+int(name[1][i])+int(name[2][i]))/len(name))

4.333333333333333
1.6666666666666667
1.3333333333333333
1.6666666666666667
3.3333333333333335
2.6666666666666665
3.3333333333333335
4.333333333333333
2.3333333333333335
1.6666666666666667
1.6666666666666667
1.3333333333333333
4.333333333333333
2.6666666666666665
3.3333333333333335
2.3333333333333335
2.3333333333333335
1.3333333333333333
3.0
3.3333333333333335
2.6666666666666665

注意:还有如何将数字四舍五入到小数点后两位?我试过做 round(_____, 2) 但它不起作用

最佳答案

您可以使用 statistics.mean 求出数字的平均值。因为你知道每一行都有相同数量的整数,所以使用 zip 同时遍历行中的每个数字:

from statistics import mean

name = ["AAAAA 4 2 1 2 4 2 4 4 5 2 2 1 5 2 4 3 1 1 3 3 5",
"BBB 5 2 1 2 4 5 4 4 1 2 2 2 4 4 4 3 1 2 3 3 2",
"K 4 1 2 1 2 1 2 5 1 1 1 1 4 2 2 1 5 1 3 4 1"]

averages = []
for i, nums in enumerate(zip(*map(str.split, name))):
if nums[0].isdigit():
avg = mean(map(int, nums))
print(f'{i} {avg:0.2f}')
averages.append(avg)

highest = ' '.join(str(i) for i, a in enumerate(averages, 1) if a == max(averages))
print(f"the highest average(s) is: #{highest} at {max(averages):0.2f}")

这个输出:

1 4.33
2 1.67
3 1.33
4 1.67
5 3.33
6 2.67
7 3.33
8 4.33
9 2.33
10 1.67
11 1.67
12 1.33
13 4.33
14 2.67
15 3.33
16 2.33
17 2.33
18 1.33
19 3.00
20 3.33
21 2.67
the highest average is: #1 8 13 at 4.33

关于python - (对于循环): How to put average values beside each number of the corresponding avg value and print the number(s) with the highest average?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59122740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com