2013-09-29 164 views
0

我有一个任务,我让用户输入尽可能多的分数,然后我必须计算最小值和最大值以及有多少人使用for-loop得到这些分数。我已经计算出的平均值和标准偏差:使用循环查找python中的最大值和最小值

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

一些格式化是为了:/。另外给一个*简短的,独立的和可运行的*样本。 – Veedrac

+0

另外,空格比Python中的选项卡更受欢迎 – SethMMorton

+0

“if”语句是否有第一部分?因为你不能从'elif'开始...... – SethMMorton

回答

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的。

+2

需要注意的一点:sys.maxint在python 3中不存在... – GL770

+0

@ GL770谢谢你让我知道。我使用float(“inf”)和'-float(“inf”)'来代替。这应该是Python 3兼容。 – Shashank

+0

我不认为你的count_min,count_max值是正确的。想想: 分数= [6,6,6,7,7,7,8,8,9,3,3,3,2,2,2,1,1] – bcollins

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) 
+1

我无法使用内置函数。我必须使用循环 – user300

+0

我很确定他不允许使用内建或numpy。 – Shashank

+0

啊好吧对不起。这只是一个学术练习。 – bcollins

相关问题