2012-09-06 125 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

相关问题