[英]How to get largest and smallest number in a sorted list?
def list_stats(values, num_int, low_range, high_range): # function to fix
values = generate_integer_list(num_int, low_range, high_range)
new_val = values.sort()
low_val = new_val[0]
high_val = new_val[num_int - 1]
total = 0
i = 0
for num in range(num_int-1):
i = i + 1
num = values[i]
total = total + num
avg = total/num_int
return total, low_val, high_val, avg
def generate_integer_list(num_int, low_range, high_range): # generates random #'s
values = []
for count in range(num_int):
number = random.randint(low_range, high_range)
values.append(number)
return values
我必须在生成的列表中找到最大和最小的数字,获取列表中所有数字的总数和平均值。 我的号码是由generate_integer_list生成的。
我已使用sort函数对生成的列表进行排序,然后获取该列表中的第一个和最后一个数字以获取最小和最大的数字。 但是,返回的值无论如何都不正确。 我尝试给排序后的列表起一个新名称,但这不起作用。
我可以返回正确值的唯一方法是,如果我打印排序列表,但是关于这个问题,我是不允许这样做的。 我怎样才能解决这个问题?
您的用于计算总数的代码将跳过第一个值; 只需直接在数字列表上循环,无需在此处创建范围:
total = 0
for num in values:
total = total + num
您可以执行此操作而无需进行排序; 您已经必须遍历所有数字:
def list_stats(values, num_int, low_range, high_range):
values = generate_integer_list(num_int, low_range, high_range)
total = 0
low_val = high_val = values[0] # something to start with
for num in values:
total += num
if num < low_val:
low_val = num
if num > high_val:
high_val = num
avg = total / num_int
return total, low_val, high_val, avg
我将total = total + num
替换为total += num
,因为归结为数字的原因。
我还从值列表中的第一个值开始了low_val
和high_val
。 循环随后将发现任何较低或较高的值。
如果这是您选择的方向,可以使用几个BIF来简化此操作。
sum(numlist) # the sum of your random list
sum(numlist) / len(numlist) # average your list
sorted(numlist, key=int)[0] # lowest element
numlist[len(numlist) - 1] # list is already sorted this gives you the max
只是简短的摘要; 我没有重写您的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.