Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47

Не получается сделать проверку city на True

18.09.2019, 00:25. Показов 3928. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, немного модернизировал код программы которая выдаёт погоду в определённом городе России, хочу реализовать чтобы если название города было написано не правильно, то выходило сообщение "Такого города не существует"...пока безрезультатно, помогите кто знает?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pyowm
 
 
while True:
    def start():
        city = input('В каком городе вы хотите узнать погоду? (Только Россия): ') 
 
        owm = pyowm.OWM('6d00d1d4e704068d70191bad2673e0cc', language='ru')
 
        observation = owm.weather_at_place(city)
        w = observation.get_weather()
        temperature = w.get_temperature('celsius')['temp']
        wind_speed = w.get_wind()['speed']
 
        print("В городе " + city + " сейчас "  + str(temperature) + ' градусов по Цельсию, ' + 'скорость ветра ' + str(wind_speed) + ", " + w.get_detailed_status() + "\n")
    start()
-----------------------------------------------------------------------
вот пробовал сделать так не получается, в чём ошибка?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pyowm
 
 
while True:
    def start():
        city = input('В каком городе вы хотите узнать погоду? (Только Россия): ') 
 
        owm = pyowm.OWM('6d00d1d4e704068d70191bad2673e0cc', language='ru')
 
        observation = owm.weather_at_place(city)
        w = observation.get_weather()
        temperature = w.get_temperature('celsius')['temp']
        wind_speed = w.get_wind()['speed']
        if False:
            print( "Такого города не существует" )
        print("В городе " + city + " сейчас "  + str(temperature) + ' градусов по Цельсию, ' + 'скорость ветра ' + str(wind_speed) + ", " + w.get_detailed_status() + "\n")
    start()
Добавлено через 57 минут
вот так только сделал но выдаёт SyntaxErorr, как сделать не пойму пока что
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pyowm
 
 
while True:
    def start():
        city = input('В каком городе вы хотите узнать погоду? (Только Россия): ') 
 
        owm = pyowm.OWM('6d00d1d4e704068d70191bad2673e0cc', language='ru')
 
        observation = owm.weather_at_place(city)
        w = observation.get_weather()
        temperature = w.get_temperature('celsius')['temp']
        wind_speed = w.get_wind()['speed']
        if city False:
            print( "Такого города не существует" )
        else:
            print("В городе " + city + " сейчас "  + str(temperature) + ' градусов по Цельсию, ' + 'скорость ветра ' + str(wind_speed) + ", " + w.get_detailed_status() + "\n")
    start()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2019, 00:25
Ответы с готовыми решениями:

Не получается сделать проверку
Задача в том что прочитав код ответа нужно его сравнить и если он совпадает с выбранным radioButton выводить в консоль "Попал"....

Не получается сделать проверку
Доброго времени суток! Есть стандартный код проверки: if (!$_POST) { $status = "Вы не заполнили форму имя!"; } ...

Не получается сделать проверку паролей
Доброго времени суток! Есть код: if (!$_POST) { $status = "Вы не заполнили форму пароль!"; } ...

11
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
18.09.2019, 00:45
Лучший ответ Сообщение было отмечено eXcroll как решение

Решение

Python
1
2
if observation is None:
  print( "Такого города не существует" )
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
18.09.2019, 01:01  [ТС]
Попробовал так с None и с False ответ один и тот же:

[C:\install_py]python wether.py
В каком городе вы хотите узнать погоду? (Только Россия): Москва
В городе Москва сейчас 7.25 градусов по Цельсию, скорость ветра 4, ясно

В каком городе вы хотите узнать погоду? (Только Россия): Мвпынын
Traceback (most recent call last):
File "wether.py", line 18, in <module>
start()
File "wether.py", line 10, in start
observation = owm.weather_at_place(city)
File "C:\Users\machinecode\AppData\Local\Prog rams\Python\Python37-32\lib\site-packages\pyowm\weatherapi25\owm25.py", line 231, in weather_at_place
_, json_data = self._wapi.cacheable_get_json(uri, params=params)
File "C:\Users\machinecode\AppData\Local\Prog rams\Python\Python37-32\lib\site-packages\pyowm\commons\http_client.py", line 87, in cacheable_get_json
status_code, data = self.get_json(uri, params=params, headers=headers)
File "C:\Users\machinecode\AppData\Local\Prog rams\Python\Python37-32\lib\site-packages\pyowm\commons\http_client.py", line 32, in get_json
HttpClient.check_status_code(resp.status _code, resp.text)
File "C:\Users\machinecode\AppData\Local\Prog rams\Python\Python37-32\lib\site-packages\pyowm\commons\http_client.py", line 155, in check_status_code
raise api_response_error.NotFoundError('Unable to find the resource')
pyowm.exceptions.api_response_error.NotF oundError: The searched item was not found.
Reason: Unable to find the resource

--------------------------------------------------------------
но что радует что SyntaxErorr уже не выдаёт
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
18.09.2019, 06:40
Лучший ответ Сообщение было отмечено eXcroll как решение

Решение

Цитата Сообщение от eXcroll Посмотреть сообщение
но что радует что SyntaxErorr уже не выда
сомнительная радость, синтакс ошибки самые простые и безобидные.
итак, вариант 1 - узнавать заранее -есть ли такой город в России, возможно запросом на какой то ресурс(вики?)
вариант2 - перехватывать исключение Unable to find the resource после которого сообщать, что город не верен и выполнение прерывать (или возвращать на ввод)
1
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
18.09.2019, 13:24  [ТС]
Спасибо за помощь!! Сделал вот такую проверку, теперь пишет как надо (при ошибке выдаёт - Такого города не существует). Но появилась другая проблема, при включенном капс локе выбивает закрывает .exe файл, не пойму почему так, а в целом всё работает

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pyowm
 
 
try:
    while True:
        def start():
            city = input('В каком городе вы хотите узнать погоду? (Только Россия): ') 
     
            owm = pyowm.OWM('6d00d1d4e704068d70191bad2673e0cc', language='ru')
 
            observation = owm.weather_at_place(city)
            w = observation.get_weather()
            temperature = w.get_temperature('celsius')['temp']
            wind_speed = w.get_wind()['speed']
            print("В городе " + city + " сейчас "  + str(temperature) + ' градусов по Цельсию, ' + 'скорость ветра ' + str(wind_speed) + ", " + w.get_detailed_status() + "\n")
        start()
except pyowm.exceptions.api_response_error.NotFoundError:
    print("Такого города не существует" + "\n" + "\n")
    start()
да, тип ошибки нашёл с помощью
Python
1
2
3
4
try:
# # your code
except Exception as e:
print(e.__class__)
потом скопировал из консоли и вставил в except
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
18.09.2019, 13:32
Цитата Сообщение от eXcroll Посмотреть сообщение
тип ошибки нашёл с помощью
а ничего что он тебе ее в консоли писал?
Цитата Сообщение от eXcroll Посмотреть сообщение
pyowm.exceptions.api_response_error.NotF oundError: The searched item was not found.
Reason: Unable to find the resource
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
18.09.2019, 14:13  [ТС]
ну да, я не знал что это именно та ошибка которую надо выделить буду знать спс

Добавлено через 38 минут
Вот рабочий код, уже не выбивает капслоком и поворотной ошибкой неправильного города:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import pyowm
 
while True:
    try:
 
        def start():
            city = input('В каком городе вы хотите узнать погоду? (Только Россия): ') 
     
            owm = pyowm.OWM('6d00d1d4e704068d70191bad2673e0cc', language='ru')
 
            observation = owm.weather_at_place(city)
            w = observation.get_weather()
            temperature = w.get_temperature('celsius')['temp']
            wind_speed = w.get_wind()['speed']
            print("В городе " + city + " сейчас "  + str(temperature) + ' градусов по Цельсию, ' + 'скорость ветра ' + str(wind_speed) + ", " + w.get_detailed_status() + "\n")
        start()
    except pyowm.exceptions.api_response_error.NotFoundError:
        bags = print("Такого города не существует" + "\n" + "\n")
        if bags == "Такого города не существует":
            start()
ура, моя первая программа на Python
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
18.09.2019, 14:19
eXcroll, мои поздравления
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
18.09.2019, 14:25  [ТС]
Спасибо
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
18.09.2019, 15:41
eXcroll, больше не объявляй функции внутри циклов
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
18.09.2019, 20:02  [ТС]
а чем это черевато? и на твой взгляд как тут можно было сделать чтоб код начинался заново после выполнения?

Добавлено через 1 час 8 минут
кастыли да?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
18.09.2019, 20:06
Цитата Сообщение от eXcroll Посмотреть сообщение
а чем это черевато?
функция нужна для выделения и переиспользования кода, а если она в цикле (не ее вызов, а она сама) то и обратиться к ней никто не может. К том же зачем накладные расходы на пересоздание одной и той же функции, вынеси ее из цикла и просто вызывай когда нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2019, 20:06
Помогаю со студенческими работами здесь

Не получается сделать проверку на никнейм
Делаю простой онлайн чатик. Данные о никнейме пользователя получаю из textBox1. Чат уже работает, но я хочу, чтобы появлялись MessageBox'ы...

Не получается сделать проверку на кнопку
Не получается сделать проверку на кнопку!(В процедуре AnalyseKey тройка) Вот код: uses wingraph,wincrt; var gd,gm:integer; ...

Не получается сделать проверку checkbox в форме
Добрый день! На форуме недавно подсмотрел код с выводом checkbox в форме на email. Теперь все работает, но возникла другая проблема: при...

Не получается сделать умножение векторов, вычитание и проверку на неравенство
Не получается сделать умножение векторов (a*b для всех i), вычитание (a для всех i) и проверку на неравенство (!=). Класс создать, ввод и...

Не получается сделать функцию поиска в структуре и проверку на неправильный ввод
Есть структура и функция ввода и вывода: typedef struct tagITEM { char Name, Dolj, Adr, Dn, Age, Dt; } ITEM; /* Массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru