В чём преимущество assert перед циклом if-else?
assert - только для отладки. Он не заменяtт ничего, если запустить интерпретатор с флагом -о, - assert вообще игнорируется. Так что не стоит использовать его ни для чего, кроме целей отладки. Он не заменит ни циклы, ни if-else
Ни в чем. Писать такие конструкции - равно быть проклинаемым до 3 колена на протяжении цикла жизни кода

try:
    assert x == y
    print(true_message)
except AssertionError:
    print(fail_message)
