2016-11-14 5 views
0

Итак, мое задание состоит в том, чтобы получить среднее по центру список, как и некоторые другие сообщения здесь, как этот (https://codereview.stackexchange.com/questions/108404/how-to-get-a-centered-mean-excluding-max-and-min-value-of-a-list-in-python) и некоторые другие. Однако мой профессор сказал нам, что нам не разрешено использовать min, max или sort, чтобы решить эту проблему. Так что я прямо сейчас это, он все еще находится в стадии разработки:Python, получив среднее значение с уловкой

def centered_average(nums): 
high=0 
low=0 
a=0 
b=0 
for i in range(len(nums)): 
    if nums[i]>a: 
     a=nums[i] 
     high=a 
for i in range(len(nums)): 
    if nums[i]<b: 
     b=nums[i] 
     low=b  
total=sum(nums) 
average=(total-high-low)/(len(nums)-2) 
print(average) 

Моя проблема заключается в том, что я не могу получить низко, чтобы быть признан наименьшим номером в списке. Например, если я введу [1,2,3,4,5] в список, моя функция должна вернуть 5 как высокий, 1 - как низкий, а 3 - по центру, так как 2 + 3 + 4 равно 9/3 = 3. Тем не менее, то, что у меня есть, возвращает низкое значение 0. Я думаю, что это из-за (объектив (nums), поскольку он думал, что первое число равно 0. Я не уверен, как это исправить.

Примечание: Я все еще новичок в этом материале, поэтому я знаю, что у меня может быть не лучшим, или что ошибка может быть проста в исправлении, но я все еще участвую в процессе обучения, поэтому любая помощь и советы будут высоко ценится.

+0

'if nums [i] algrebe

+0

Есть ли причина, по которой он правильно возвращает значение 5, когда у меня есть настройка как nums [i]> a? –

+0

Потому что '1> 0 (инициализированный a)', '2> 1',' 3> 2', '4> 3',' 5> 4'. Однако в минимальном случае ничего не меньше 0. – algrebe

ответ

0

проблема вашего начала бега минимум (и работает максимум), как 0.

Запуск работает минимум в float("inf") (как все г урантировано, чтобы быть меньше этого). Начните рабочий максимум float("-inf") (так как все гарантировано будет больше).

Или запустите оба как первый элемент списка (который является либо минимальным/максимальным, либо есть другой элемент, который ниже/выше его).

+0

Так что, если бы я сделал что-то вроде 'b = nums [1] ', это сработало бы? Если бы у меня был список вроде [3,4,2,1,5,5], он начинался бы с 3, а затем, когда он проходил через список, он переходил бы к 2 и, наконец, к 1, поскольку он был наименьшим? –

+0

Yup ............ – Amadan

+0

Собственно, это просто решило. Спасибо вам за помощь. Я не думал о том, чтобы установить его в переменную списка. –

Смежные вопросы