Проверка нескольких условий

Есть задача: проверить входит ли кирпич в прямоугольное отверстие.

hole_x, hole_y = 8, 9
brick_x, brick_y, brick_z = 6, 11, 3

Вот что я хотел сделать:

if brick_x <= hole_x and brick_x <= hole_y:
    if brick_y <= hole_x and brick_y <= hole_y:
        if brick_z <= hole_x and brick_z <= hole_y:
            print('ДА')

else:
    print('НЕТ')

Но при запуске кода программа завершается без выдачи значения, но без ошибок. Подскажите, пожалуйста, что не так.


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

Автор решения: DGDays

Ваша проблема - нету условия после всех if.

То есь у вас слишком много if и если один из них не проходит по условию, то ничего не выполняется.

В вашем случае легче сделать так:

if (brick_x <= hole_x and brick_x <= hole_y) and (brick_y <= hole_x and brick_y <= hole_y) and (brick_z <= hole_x and brick_z <= hole_y):
    print('ДА')

else:
    print('НЕТ')

Либо:

if brick_x <= hole_x and brick_x <= hole_y:
    if brick_y <= hole_x and brick_y <= hole_y:
        if brick_z <= hole_x and brick_z <= hole_y:
            print('ДА')

        else:
            print('НЕТ')
    else:
        print('НЕТ')
else:
    print('НЕТ')
→ Ссылка
Автор решения: MarianD

Хватит взять 2 наименьшие ребра кирпича и проверить, если меньшее из них меньше чем меньшая страна ответствия и большее из них меньше чем большая страна отверствия:

brick = sorted([brick_x, brick_y, brick_z])

if brick[0] <= min(hole_x, hole_y) and brick[1] <= max(hole_x, hole_y):
    print('ДА')
else:
    print('НЕТ')  
→ Ссылка
Автор решения: Иван Ильич

Только учусь, и, надеюсь, мой вариант правильный:

if hole_x >= brick_x and brick_y and brick_z <= hole_y:
    print('УРА, Проходит отвертие')
else:
    print('А нет, не прохотит')

Заметил в своем коде ошибку. Так, оператор if не берет значение brick_y.

Вот исправленная версия кода:

if hole_x >= brick_x and brick_y <= hole_y:
  print('УРА, Проходит отвертие')
elif hole_x == brick_z == hole_y:
  print('УРА, Проходит отвертие')
else:
  print('А нет, не прохотит')
→ Ссылка