Можно ли объявить переменную после условия if python

room = str(input())
if room == "треугльник":
    a = float(input())
    b = float(input())
    c = float(input())
    p = ((a + b + c) / 2)
print((p * (p - a) * (p - b) * (p - c)) ** 0.5)

В результате пишет

NameError: name 'p' is not defined


Ответы (1 шт):

Автор решения: MarianD
  1. (Не важно):

    room = str(input())
    

    Не надо str(), функция input() по определению возвращает строку (т.е. тип str):

    room = input()
    
  2. (Важно):

    if room == "треугльник":
    

    И когда room != "треугльник"?

    Тогда вся ветвь if пропускается, таким образом не исполнится ни команда

    p = ((a + b + c) / 2)
    

    (объявление переменной p) и следующая команда

    print((p * (p - a) * (p - b) * (p - c)) ** 0.5)

    выдает ошибку, не зная, что такое p.

    Вы наверно хотели эту команду тоже включить в ветвь if (т.е. добавить отступ):

    if room == "треугльник":
        a = float(input())
        b = float(input())
        c = float(input())
        p = ((a + b + c) / 2)
        print((p * (p - a) * (p - b) * (p - c)) ** 0.5)
    
→ Ссылка