Вопрос задан 02.11.2023 в 01:29. Предмет Информатика. Спрашивает Бобровская Даша.

Недавно начал изучать python и решил написать программу типа погода всё сделал правильно

библиотеку установил версия 3.0.0 версия python 3.8.5 но выскакивает ошибка Traceback (most recent call last): File "C:/Users/___/123.py", line 5, in observation = owm.weather_at_place(gorod) AttributeError: 'OWM' object has no attribute 'weather_at_place' долго искал в интернете но это не помогло с чем связана ошибка и как её исправить исходный код import pyowm gorod = input('Выберите город'"\n") owm = pyowm.OWM('мой id owm') observation = owm.weather_at_place(gorod) w = observation.get_weather() temperature = w.get_temperature('celsius')['temp'] print("В городе " + gorod + " сейчас " + str(temperature) + "°С")
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Вострецова Екатерина.

Ответ:

С вероятнее всего, вы написали свой скрипт по каким то старым гайдам, информация в которых давным давно устарела. В текущей версии API OpenWeatherMap объект OWM не имеет атрибута weather_at_place()

В текущей версии API объект OWM имеет метод weather_manager(), возвращающий WeatherManager. Уже у этого объекта мы можем вызвать метод weather_at_place(), который опять же вернёт нам очередной объект, Observation. У Observation мы можем обратиться к атрибуту weather, уже у которого вызываем метод temperature(unti), который нам наконец-таки вернёт словарь с данными о температуре в указанной области.

Пример рабочего скрипта:

#Python 3.8.3 pyowm 3.0.0

import settings  #Я храню все API и прочее в отдельном .py файле

import pyowm

API_KEY = settings.PYOWM_APIKEY  #Получаем API_KEY из файла настроек

owm_obj = pyowm.OWM(API_KEY)  #Создаём экземпляр OWM

city = input('Enter city to get weather:\n')

#Получаем WeatherManager

weather_manager = owm_obj.weather_manager()  

#Получаем Observation в для указанного city:

obs = weather_manager.weather_at_place(city)

#Обращаемся к атрибуту weather объекта obs (Observation) и #вызываем метод temperature, тем самым получая заветные данные о #температуре. В квадратных скобках указываем ключ 'temp', что бы #получить только данные о текущей температуре:

temperature_at_selected_place = obs.weather.temperature(unit='celsius')['temp']  

print(f'{temperature_at_selected_place}')

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Ошибка, которую вы видите, связана с тем, что библиотека PyOWM не имеет метода `weather_at_place`. Вместо этого, вы должны использовать метод `weather_at_place`. Ваш код должен быть исправлен следующим образом:

```python import pyowm

gorod = input('Выберите город: ') owm = pyowm.OWM('мой id owm') observation = owm.weather_at_place(gorod) w = observation.get_weather() temperature = w.get_temperature('celsius')['temp'] print("В городе " + gorod + " сейчас " + str(temperature) + "°С") ```

Просто замените `weather_at_place` на `weather_at_place` в коде, и это должно устранить вашу проблему.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос