Использовать/доступ к словарю внутри функции? [закрыто]

Вопрос или проблема

Мне дан словарь, и мне нужно найти среднее значение каждого индекса, не используя функции sum или len.

observation = {
    'temperature': [85, 90, 15, 25, 90, 11, 20, 15, 25],
    'dewpoint': [80, 85, 10, 20, 85, 8, 15, 15, 22],
    'wind speed': [5, 10, 2, 0, 25, 30, 35, 4, 2],
    'precipitation': [0, 0, 0, 2, 1, 0, 1, 0, 3]}

def temperature_mean(temperature):
    temperature_sum = 0
    for value in observation['temperature']:
        temperature_sum += value

    temperature_count = 0
    for value in observation['temperature']:
        temperature_count += 1

    for value in observation['temperature']:
        temperature_mean = temperature_sum / temperature_count

    return temperature_mean

print("Средняя температура:", temperature_mean)

Я получаю

Средняя температура: <function temperature_mean at 0x7f41eb491e50>

И у меня нет идей, что делать дальше

Чтобы ваш код работал, вам нужно вызвать вашу функцию.

print("Средняя температура:", temperature_mean(80))

Но есть и другие проблемы.

  • Температура, которую вы передаете в вашу функцию как аргумент, никогда не используется. Возможно, имелось в виду передать observation['temperature'] в temperature_mean, а не обращаться к глобальному observation внутри temperature_mean.
  • Если вы используете глобальную переменную, вам следует отметить это с помощью global.
  • Первые два цикла могут быть объединены в один цикл.
  • Последний цикл бесполезен. На самом деле, присваивание переменной и затем возврат — это совершенно избыточно.

Устранив эти недочеты, мы можем получить:

def temperature_mean():
    global observation

    temperature_sum = 0
    temperature_count = 0 

    for value in observation['temperature']:
        temperature_sum += value 
        temperature_count += 1

    return temperature_sum / temperature_count

Дополнительно, рекомендуется использовать f-строку для вывода результата.

print(f"Средняя температура: {temperature_mean()}")

Это упрощает контроль над форматированием. Например, мы можем захотеть округлить до двух знаков после запятой.

print(f"Средняя температура: {temperature_mean():.2f}")

.

Ответ или решение

Вопрос, связанный с использованием словаря внутри функции для нахождения среднего значения элементов списка, представляет собой интересную задачу в области программирования на языке Python. Рассмотрим, как правильно организовать код, избегая распространенных ошибок и с учетом ограничения на использование функций sum и len.

Определение задачи

Имеется словарь под названием observation, в котором содержатся данные о температуре, точке росы, скорости ветра и осадках. Ваша задача состоит в том, чтобы вычислить среднее (mean) значение для значений температуры, хранящихся в словаре, без использования функций sum и len.

Решение задачи

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

Этап 1: Оптимизация кода

Ваш первоначальный код содержит несколько избыточных повторений. Мы можем объединить циклы, чтобы улучшить читаемость и эффективность кода. Вот пример исправленного решения:

observation = {
    'temperature': [85, 90, 15, 25, 90, 11, 20, 15, 25]
}

def temperature_mean():
    temperature_sum = 0
    temperature_count = 0 

    for value in observation['temperature']:
        temperature_sum += value
        temperature_count += 1

    return temperature_sum / temperature_count

print(f"The normal (mean) temperature is: {temperature_mean():.2f}")

Подробный разбор кода

  1. Инициализация переменных: Мы создаем две переменные temperature_sum и temperature_count, которые будут хранить сумму значений и их количество соответственно.

  2. Цикл для суммирования: В одном цикле мы проходим по всем значениям температуры, увеличивая как сумму, так и счётчик. Это позволяет нам избежать лишних проходов по списку.

  3. Возврат результата: Вместо лишнего цикла для вычисления среднего значения, мы используем уже посчитанные значения, деля сумму на количество.

  4. Использование f-строк: Для вывода результата мы используем f-строки, что позволяет не только форматировать результат (например, до двух знаков после запятой), но и делать код более читаемым.

Заключение

Использование словаря внутри функции и правильная организация кода позволяет достигать эффективных решений без лишних вычислений. Необходимо также помнить о корректном обращении к глобальным переменным, чтобы избежать путаницы. В данном примере мы показали, как эффективно разобраться с задачей вычисления среднего значения, удовлетворяя всем поставленным условиям.

Оцените материал
Добавить комментарий

Капча загружается...