Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 26, 2019 20:43:23

Bodriy
Зарегистрирован: 2019-08-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема в условии

Всем Бодрого времени суток. Сразу извиняюсь за нубство. Вот кусок кода:

import pyowm

owm = pyowm.OWM('dsfdsgfergdfg', language = “ru”)
place = “Владивосток”
observation = owm.weather_at_place(place)
w = observation.get_weather()
temp = w.get_temperature('celsius')
print(“Сегодня в нашем городе ” +str(temp)+“ градусов Цельсия”)
print(“ ”)
if w.get_detailed_status() == “сыро”:
print(“бла-бла”)
if w.get_detailed_status() == “пасмурно”:
print(“бла”)
if w.get_detailed_status() == “облачно”:
print(“облака”)
else:
print(“ все сломалось я не знаю такой погоды, как ”+“\”“+w.get_detailed_status()+”\“”)

При пасмурно, выводится и строка “бла” и условие else. По чему, в чем ошибка?
Мне кажется что условие “else” должно срабатывать, когда другие условия не срабатывают.

Отредактировано Bodriy (Авг. 26, 2019 20:46:03)

Офлайн

#2 Авг. 26, 2019 21:16:14

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема в условии

Если “пасмурно”, то первый if не выполняется, второй if выполняется, а третий if не выполняется, но else относящееся только к третьему if будет выполняться. Вам нужно второй и третий if заменить на elif, тогда будет правильно.

Офлайн

#3 Авг. 26, 2019 21:31:20

Bodriy
Зарегистрирован: 2019-08-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема в условии

rami
Если “пасмурно”, то первый if не выполняется, второй if выполняется, а третий if не выполняется, но else относящееся только к третьему if будет выполняться. Вам нужно второй и третий if заменить на elif, тогда будет правильно.

Я правильно понял, else всегда будет работать только для последнего if ?

Офлайн

#4 Авг. 26, 2019 21:49:55

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема в условии

Не правильно, каждый блок условий должен содержать только один if, любое количество elif (дополнительные условия) и заключительное else (если ни одно условие не выполнилось). Минимальный блок условий состоит только из одного if (elif и else могут отсутствовать). В вашем примере три if, следовательно три независимых блока условий, последний содержит else.

Вам нужен один блок условий с дополнительными условиями elif и else, как я сказал раньше.

Офлайн

#5 Авг. 30, 2019 10:14:05

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Проблема в условии

как то так

 # coding: utf-8
import pyowm
owm = pyowm.OWM('dsfdsgfergdfg', language = "ru")
place = "Владивосток"
observation = owm.weather_at_place(place)
w = observation.get_weather()
temp = w.get_temperature('celsius')
test = {"сыро":"бла-бла",
        "пасмурно":"бла",
        "облачно":"облака"}
if w in test.keys() :
    print("Сегодня в нашем городе",
          str(temp),
          "градусов Цельсия",
          test.get(w))
else:
    print("все сломалось я не знаю такой погоды, как",
          "\n",
          w.get_detailed_status(),
          "\n")
# зы а еще у вас кавычки и окончание строки не той конструкции
#     ... были ...



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Авг. 30, 2019 15:55:17)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version