Проверка нескольких условий
Есть задача: проверить входит ли кирпич в прямоугольное отверстие.
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 шт):
Ваша проблема - нету условия после всех 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('НЕТ')
Хватит взять 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('А нет, не прохотит')