2012-09-06 165 views
6

我必須要求用戶輸入一些數字,然後輸出大小,總和,平均值,最小值和最大值。我可以得到前三件事,但我堅持最小和最大的一個。我的問題是我不能使用sort(),因爲我需要讓列表中的一個整數,但你不能使用split()在Python中查找最小值和最大值

這裏整數名單是我的代碼:

number = raw_input('Enter number:') 
    list_of_numbers = number.split() 
    tally = 0 
    sum = 0 
     while number!= '': 
     tally = tally + 1 
     sum = sum + int(number) 
     average = float(sum)/float(tally) 
     number = raw_input('Enter number:') 
    print "Size:", tally 
    print "Sum:", sum 
    print "Average:", average 

任何提示?謝謝

回答

3

我想你可以使用min()和max()來找到這些值。

+0

我不認爲存在 – user1008073

+4

@ user1008073 http://docs.python.org/library/functions.html#min – squiguy

16

你允許使用Python的內置函數嗎?如果是的話,就比較容易:

number = raw_input('Enter number:') 
list_of_numbers = number.split() 

numbersInt = map(int, list_of_numbers) # convert string list to integer list 

print "Size:", len(numbersInt) 
print "Min:",  min(numbersInt) 
print "Max:",  max(numbersInt) 
print "Sum:",  sum(numbersInt) 
print "Average:", float(sum(numbersInt))/len(numbersInt) if len(numbersInt) > 0 else float('nan') 

其中numbersInt = map(int, list_of_numbers)列表中的每個串號轉換爲整數。每個功能具有以下含義:

  • len計算列表
  • min計算最小
  • max計算最大
  • sum的長度計算的總和清單

Python標準庫中沒有平均函數。但是,您可以改用numpy.mean()

+0

這是最Python的方式和最有效的一個。 – jurka

1

你有兩個選擇:

  • 您可以將目前一些比較以前的極值,並相應地更新您的最小值和最大值;

    import sys 
    tally = 0 
    sum = 0 
    nmax = -sys.maxint 
    nmin = +sys.maxint 
    number = raw_input('Enter number:') 
    while number!= '': 
        number = int(number) 
        if number > nmax: 
         nmax = number 
        elif number < nmin: 
         nmin = number 
        tally = tally + 1 
        sum += number 
        average = float(sum)/float(tally) 
        number = raw_input('Enter number:') 
    

    我們使用您的系統(sys.maxint)的最大整數初始化我們nminnmax

  • 你可以每個數字存儲在一個列表中,然後同時執行所有操作:

    number = raw_input('Enter number:') 
    numbers = [] 
    while number!= '': 
        numbers.append(int(number)) 
        number = raw_input('Enter number:') 
    numbers.sort() 
    nmin = numbers[0] 
    nmax = numbers[-1] 
    tally = len(numbers) 
    nsum = sum(numbers) 
    avg = nsum/float(tally) 
    
1

如果我沒有錯,這可能是最不復雜的。

len_min_max_sum=reduce(lambda x,y : (x[0]+1,y,x[2],x[3]+y) if x[0]>y else (x[0]+1,x[1],y,x[3]+y) if x[2]<y else (x[0]+1,x[1],x[2],x[3]+y) ,arr,(0,arr[0],arr[0],0)) 

len_min_max_sum_avg=(len_min_max_sum[0],len_min_max_sum[1],len_min_max_sum[2],len_min_max_sum[3],float(len_min_max_sum[3])/len_min_max_sum[0]) 
1
tally = 0 
sum = 0 
while True: 
number = input('Enter number') 
list_of_numbers = number.split() 
if number == '': 
continue 
else: 
tally = tally + 1 
sum = sum + int(number) 
average = float(sum)/float(tally) 
print('Size:', tally) 
print('Sum:', sum) 
print('Average:', average) 
+1

請編輯您的縮進。這對於Python來說至關重要。 – YakovL

相關問題