0

我有一个任务,我让用户输入尽可能多的分数,然后我必须计算最小值和最大值以及有多少人使用 for 循环获得这些分数。我计算了平均值和标准差:

elif user_option == 3:

    total = 0
    for val in scores_list:
        total = total + val
    average = total/ len(scores_list)
    print (average)
elif user_option == 2:
    total = 0
    for val in scores_list:
        total = total + val
    average = total/ len(scores_list)
    diffsquared = 0
    sum_diffsquared = 0
    for val in scores_list:
        diffsquared= (val - average)**2
        sum_diffsquared= diffsquared + sum_diffsquared
    stdev= sqrt((sum_diffsquared)/len(scores_list))
    print(stdev)

任何想法如何找到最小值和最大值?

4

2 回答 2

1

像这样的东西?

min_val = float("inf")
max_val = -float("inf")
count_min = 0
count_max = 0

for val in scores_list:
    if val < min_val:
        min_val = val
        count_min = 1
    elif val == min_val:
        count_min += 1

    if val > max_val:
        max_val = val
        count_max = 1
    elif val == max_val:
        count_max += 1

print "Minimum score:", min_val
print "Maximum score:", max_val
print "Number of students with minimum score:", count_min
print "Number of students with maximum score:", count_max

编辑:正如@GL770 在评论中指出的那样, sys.maxint 仅在 Python 2.x 中可用。在 Python 2.x 中,您可以这样做:

import sys
min_val = sys.maxint
max_val = -sys.maxint - 1

这个float("inf")东西也适用于 Python 2.x,所以这个方法不是必需的。

于 2013-09-29T21:32:47.443 回答
0

内置函数 min() 和 max() 怎么样:

scores_min = min(scores_list)
scores_max = max(scores_list)

也不要忘记numpy:

import numpy
scores_array = numpy.array(scores_list)
scores_mean = numpy.mean(scores_array)
scores_std = numpy.std(scores_array)
scores_min = numpy.min(scores_array)
scores_max = numpy.max(scores_array)
于 2013-09-29T21:33:30.927 回答