7

我必须要求用户输入一些数字,然后打印大小、总和、平均值、最小值和最大值。我可以得到前三件事,但我被困在最小和最大的一个上。我遇到的问题是我不能使用sort(),因为我需要将列表设为整数 1,但您不能将整数列表用于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

有什么提示吗?谢谢

4

6 回答 6

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'))
# float conversion is only required by Python 2. 

wherenumbersInt = map(int, list_of_numbers)将列表的每个字符串编号转换为整数。每个函数的含义如下:

  • len计算列表的长度
  • min计算最小值
  • max计算最大值
  • sum计算列表的总和

Python 标准库中没有 mean 函数。但你可以numpy.mean()改用。pip install numpy使用or安装它conda install numpy,然后:

import numpy as np
print("Average: ", np.mean(numbersInt))
于 2012-09-06T03:04:38.617 回答
4

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

于 2012-09-06T02:44:37.563 回答
2

你有两个选择:

  • 您可以将当前数字与之前的极值进行比较,并相应地更新您的最小值和最大值;

    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)
    
于 2012-09-06T05:55:04.010 回答
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)
于 2016-06-22T19:25:10.843 回答
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])
于 2015-11-03T05:39:18.053 回答
0

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

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

以上的结果是

>>>maximum
9
>>>minimum
2

希望有帮助。

于 2018-03-18T11:52:39.187 回答