Упражнение CodeAcademy Median в Python 3

Я прохожу Codeacademy и выполняю упражнения на Python 3. У меня возникли проблемы с получением хороших результатов в упражнении «Медиана».

я получаю сообщение об ошибке

TypeError: list indices must be integers or slices, not float.

Я попытался преобразовать индексы в числа с плавающей запятой. Я не могу использовать деление пола (//), потому что мне нужно, чтобы в результате было возвращено нецелое число.

def median(lst):
    sorted_list = sorted(lst)
    if len(sorted_list) % 2 != 0:
        index = len(sorted_list)//2
        return sorted_list[index]
    elif len(sorted_list) % 2 == 0:
        index_1 = (len(sorted_list)/2)
        index_2 = (len(sorted_list)/2) - 1
        mean = (sorted_list[index_1] + sorted_list[index_2])/2
        return mean

print(median([1, 6, 5, 47, 3, 100, 59, 36, 4, 38]))

Любая помощь от гуру будет принята с благодарностью. Спасибо!

Используйте (//) для index_1 и index_2. ваш результат будет плавающим, потому что для среднего использования (/)

Heyran.rs 13.02.2019 15:33
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
38
1

Ответы 1

Индекс элемента в списке — это его позиция в списке.

example_list = [1, 1, 4, 5, 5, 9]

Здесь, если вам нужно среднее значение, вы должны усреднять два средних значения: 4 и 5. Если вы делаете это, находя len(example_list) / 2 и принимая это как индекс, ваш индекс не является целым числом, поэтому он не указать позицию в списке.

Какова 3.0 позиция чего-либо? Это не имеет смысла. Вам нужно использовать целые числа только при взятии срезов. В твоем случае:

elif len(sorted_list) % 2 == 0:
    index_1 = (len(sorted_list) // 2)
    index_2 = (len(sorted_list) // 2) - 1
    mean = (sorted_list[index_1] + sorted_list[index_2]) / 2
    return mean

Редактировать:

Всякий раз, когда вы используете /, ваш ответ будет плавающим. Даже если математически результат является целым числом, он будет возвращен как x.0, а не x.

Другие вопросы по теме