“返回整数列表的”居中“平均值,我们将说这是值的平均值,但忽略列表中的最大值和最小值。如果最小值有多个副本,忽略一个副本,对于最大值也一样。使用整数除法生成最终平均值。您可以假设列表长度为3或更长。”
这是我在家庭作业中遇到的一个问题,我很困惑如何找到最大/最小的数字,并将它们从清单中删除。这是我到目前为止所拥有的。它适用于我必须通过的10/14方案。我认为这仅仅是因为它抓住了中位
def centered_average(nums):
x = 0
for i in range(len(nums)):
    x = i + 0
y = x + 1
if y%2 == 0:
    return (nums[y/2] + nums[(y/2)+1]) / 2
else:
    return nums[y/2]发布于 2015-12-09 16:51:08
排序数组肯定是比较简单的代码,这里有一个手动循环的替代方案
    max_value = nums[0]
    min_value = nums[0]
    sum = 0
    for x in nums:
        max_value = max(max_value, x)
        min_value = min(min_value, x)
        sum += x
    return (sum - max_value - min_value) / (len(nums) - 2)这只会添加所有的内容,并移除末尾的最大值和最小值。
发布于 2015-12-09 16:44:48
如果列表不是太长,那么在计算上对列表进行排序应该不会太昂贵:
sorted(nums)然后,您可以创建一个没有第一个和最后一个条目的新列表,这将是最小和最大的值:
new_nums = sorted(nums)[1:-1] # from index 1 to the next-to-last entry发布于 2015-12-09 16:58:23
在我开始之前,我知道在其他答案中提到了使用函数排序的更简单的方法,是的,这是真的,但我相信您的老师一定已经让您能够掌握循环并逻辑地使用它们。
首先选择你的第一个号码,并分配它的高低,不要担心,这将是有意义的之后。
以def为中心的平均值(Nums):
high = nums[0]
small = nums[0]如果发生了神奇的事情,循环遍历列表,如果循环中的on大于前面的数,那么您可以用它替换变量high,让我演示一下。
for count in nums:
    if count > high:
        high = count
    if count < low:
        low = count现在,您有了低值和高值,您所做的就是将循环的值相加,减去高值和低值(正如您所说的,您不需要它们),.Then将这个答案除以一系列名词。
for count in nums:
    sum = count + sum
sum = sum - (high + low)
return sumhttps://stackoverflow.com/questions/34184200
复制相似问题