Найти - Пользователи
Полная версия: Проблема в условии
Начало » Python для новичков » Проблема в условии
1
Bodriy
Всем Бодрого времени суток. Сразу извиняюсь за нубство. Вот кусок кода:

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” должно срабатывать, когда другие условия не срабатывают.
rami
Если “пасмурно”, то первый if не выполняется, второй if выполняется, а третий if не выполняется, но else относящееся только к третьему if будет выполняться. Вам нужно второй и третий if заменить на elif, тогда будет правильно.
Bodriy
rami
Если “пасмурно”, то первый if не выполняется, второй if выполняется, а третий if не выполняется, но else относящееся только к третьему if будет выполняться. Вам нужно второй и третий if заменить на elif, тогда будет правильно.

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

Вам нужен один блок условий с дополнительными условиями elif и else, как я сказал раньше.
AD0DE412
как то так
 # 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")
# зы а еще у вас кавычки и окончание строки не той конструкции
#     ... были ...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB