在python中查找最小值和最大值

时间:2012-09-06 02:41:15

标签: python-2.7

我必须要求用户输入一些数字,然后打印大小,总和,平均值,最小值和最大值。我可以得到前三件事,但我坚持最小和最大的一件事。我遇到的问题是我无法使用sort(),因为我需要将列表设为整数,但是不能使用split()的整数列表

这是我的代码:

    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

任何提示?感谢

6 个答案:

答案 0 :(得分:18)

您是否可以使用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()

答案 1 :(得分:3)

我认为您可以使用min()和max()来查找这些值。

答案 2 :(得分: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)
    

答案 3 :(得分: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])

答案 4 :(得分:1)

tally = 0
sum = 0
average = 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)

答案 5 :(得分:0)

python中的max()min()预定义数学方法可以解决这个问题 如下

numbers = [3,2,5,9,5,3]
minimum = min(numbers)
maximum = max(numbers)

以上结果是

>>>maximum
9
>>>minimum
2

希望有所帮助。