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