Форум сайта python.su
Сделал прогу которое показывает погоду, на модуле pyowm. Все работает. Но если пользователь сделает хоть одну опечатку в названии города, то программа вылетает. Как сделать так чтобы при ошибке программа не вылетала, и снова задал вопрос.
Код снизу
from pyowm import OWM
import math
from pyowm.utils.config import get_default_config
import string
config_dict = get_default_config()
config_dict = ‘ru’
owm = OWM(“KEY”, config_dict)
place = input(“Введите название города!: ”)
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
#Температура
t = w.temperature(“celsius”)
t1 = t
t2= t
t3= t
t4= t
#Ветер
wi = w.wind()
#Влажность
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()
Офлайн
lemon127
можно использовать Built-in Exceptions https://docs.python.org/3/library/exceptions.html
А именно ValueError
Если задано неверное значение, то пишешь пользователю в эксепшене, что “Ваш город не найден. Вероятно, что вы неверно ввели его название. Проверьте и повторите ввод”
Офлайн
Вероятнее всего ошибку вызывает эта строчка:
observation = mgr.weather_at_place(place)
try: observation = mgr.weather_at_place(place) except "Исключение": print('Нет такого города')
[code python][/code]
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Отредактировано DamMercul (Июль 7, 2021 21:03:46)
Офлайн
lemon127Странно, я попробовала запустить
Все работает.
config_dict = ‘ru’
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')] []
Отредактировано Ocean (Июль 7, 2021 23:46:28)
Офлайн