Почему при формате int в Python выводит число с плавающей точкой (Float)?
n = n/2
В этой строке ты делишь число на 2. При такой операции тебе возвращается тип float. Можешь обернуть его еще раз в int() перед печатью

И конкретно в твоем случае можно обойтись без math. Можно воспользоваться целочисленным делением (// в python) и прибавить 1, если нужно округление в большую сторону. Но это только в случае если делишь на 2.
math.ceil() округляет и возвращает в вашем случае целое число. Вам незачем еще раз переводить его в int:
>>> import math
>>> num = math.ceil(5 / 2)
>>> num
3

А у вас код не работает потому что срабатывает условие - n/2 возвращает float