2013-09-29 162 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

相關問題