使用循环在python中查找最大值和最小值

时间:2013-09-29 21:25:36

标签: python for-loop python-3.3

我有一个任务,我让用户输入尽可能多的分数,然后我必须计算最小值和最大值以及使用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)

如何找到最小值和最大值?

2 个答案:

答案 0 :(得分: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,所以这个方法不是必需的。

答案 1 :(得分: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)
相关问题