lemon127
Все работает.
Странно, я попробовала запустить
тут ошибка, правильный синтаксис вот так:
config_dict['language'] = 'ru'
weather = (f“Сейчас в {place} температура {math.floor(t1)} C°\n{string.capwords(dt)}. Скорость ветра {math.floor(wi)} м/с”)
Это тоже вылетит и ничего не напечатает, потому что температура и ветер не доделаны. Ошибка типов у тебя
Вот так работает и печатает
from pyowm import OWM
import math
from pyowm.utils.config import get_default_config
import string
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM("insert-your-API-key", config_dict)
place = 'Paris'
# place = input(“Введите название города!: ”)
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
#Температура
t = w.temperature('celsius')
t1 = int(t['temp'])
t2= t
t3= t
t4= t
#Ветер
wi = w.wind()['speed']
#Влажность
humi = w.humidity
#облака
cl = w.clouds
#статус
st = w.status
dt= w.detailed_status
#время обновление
ti = w.reference_time('iso')
#Давление
pr = w.pressure
#Видимость
vd = w.visibility_distance
weather = (f'Сейчас в {place} температура {math.floor(t1)} C°\n{string.capwords(dt)}. Скорость ветра {math.floor(wi)} м/с')
print(weather)
# input()
Но самое прикольное в другом. Ты никак не обрабатываешь кейс с городами тезками.
Москва, Санкт-Петербург, Лондон, Париж и так далее у нас на планете не в единственном экземпляре представлены и используемый тобой сервис про это знает.
from pyowm import OWM
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM("insert-your-API-key", config_dict)
place = ["Paris", "London", "Moscow", "Saint Petersburg", "New York", "Doesn't exist"]
reg = owm.city_id_registry()
for city in place:
get_citi_id= reg.ids_for(city)
print(get_citi_id)
[(2968815, 'Paris', 'FR'), (2988506, 'Paris', 'FR'), (2988507, 'Paris', 'FR'), (4125402, 'Paris', 'AR'), (4246659, 'Paris', 'IL'), (4303602, 'Paris', 'KY'), (4402452, 'Paris', 'MO'), (4647963, 'Paris', 'TN'), (4717560, 'Paris', 'TX'), (4974617, 'Paris', 'ME'), (5603240, 'Paris', 'ID'), (6455259, 'Paris', 'FR'), (6942553, 'Paris', 'CA')]
[(2643743, 'London', 'GB'), (4119617, 'London', 'AR'), (4298960, 'London', 'KY'), (4517009, 'London', 'OH'), (5056033, 'London', 'MO'), (5367815, 'London', 'CA'), (6058560, 'London', 'CA')]
[(5202009, 'Moscow', 'PA'), (524894, 'Moscow', 'RU'), (524901, 'Moscow', 'RU'), (5601538, 'Moscow', 'ID')]
[(498817, 'Saint Petersburg', 'RU'), (536203, 'Saint Petersburg', 'RU')]
[(5128638, 'New York', 'NY')]
[]
Так вот. Эта штука решает сразу 2 твои проблемы.
Если города не существует, то обрати внимание, что всегда отдается пустой список.
Введи проверку и обрабатывай ответ API.
Если len(get_citi_id) = 0, то пользователь явно ввел город по которому в сервисе нет данных или ввел с опечаткой.
Если len(get_citi_id) = 1, то в сервисе нашелся всего один город с искомым названием
Если len(get_citi_id) > 1, то на планете несколько городов с таким названием и тебе надо добавить дополнительную обработку.
Например,
- отображать список и предлагать пользователю выбор из нескольких городов;
- отображать погоду по всем найденным Лондонам/Парижам
- отдавать по тому, который первый под руку подвернулся
- запрашивать страну
и так далее.
Тут тебе уже решать, как в этом случае твой скрипт работать должен.