Повторный запрос данных от пользователя при неправильном вводе
Есть код, он рабочий, но мне нужно сделать проверку правильности написания города, т.е. когда вводишь неправильно город (с ошибкой или не существующий) он просил ввести заново, а так ошибку выдает
from pyowm import OWM
from pyowm.utils.config import get_default_config # блок для изменения языка на русский
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('c920e1facb71d07020ecfbdfca252772', config_dict )
place = input("Введите город, в котором хотите узнать погоду: ")
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place) # выдает ошибку в этой строке
w = observation.weather
# print(w) # для проверки общих сведений
st = w.detailed_status
t = w.temperature('celsius')["feels_like"]
print("В городе " + place + " сейчас " + str(st)) # вывод погоды
print("Температура " + str(t) + "°C") # вывод температуры
Ответы (1 шт):
Автор решения: MazZz3R
→ Ссылка
Решение рекурсией:
import pyowm
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = pyowm.OWM('ТОКЕН', config_dict)
mgr = owm.weather_manager()
def get_weather(city):
try:
observation = mgr.weather_at_place(city)
except pyowm.commons.exceptions.NotFoundError:
return get_weather(input("Вы неверно ввели город, введите КОРРЕКТНОЕ название: "))
return observation.weather, city
weather, city = get_weather(input("Введите город, в котором хотите узнать погоду: "))
st = weather.detailed_status
t = weather.temperature('celsius')["feels_like"]
print("В городе " + city + " сейчас " + str(st))
print("Температура " + str(t) + "°C")
Решение циклом:
import pyowm
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = pyowm.OWM('ТОКЕН', config_dict)
mgr = owm.weather_manager()
city = input("Введите город, в котором хотите узнать погоду: ")
all_ok = False
while not all_ok:
try:
observation = mgr.weather_at_place(city)
except pyowm.commons.exceptions.NotFoundError:
city = input("Вы неверно ввели город, введите КОРРЕКТНОЕ название: ")
else:
weather = observation.weather
all_ok = True
st = weather.detailed_status
t = weather.temperature('celsius')["feels_like"]
print("В городе " + city + " сейчас " + str(st))
print("Температура " + str(t) + "°C")
