我必须要求用户输入一些数字,然后打印大小,总和,平均值,最小值和最大值。我可以得到前三件事,但我坚持最小和最大的一件事。我遇到的问题是我无法使用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
任何提示?感谢
答案 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
)来初始化我们的nmin
和nmax
您可以将每个号码存储在一个列表中,然后立即执行所有操作:
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
希望有所帮助。