ZerGРабочесть конструкции ИМХО обуславливается именно банальностью.
Вполне себе рабочая конструкция!
Как ты думаешь, в твоем примере выше 0x333 - это число? А 1e34 - число? Мы вряд ли ожидаем, что юзер знаком с синтаксисом питоньих литералов, поэтому логично предположить что этот ввод должен быть некорректным.
если мы перепишем пример вот так, например
for i in range(0, 2): try: number = int(input(), 10) except: print("This is not number")
то это не то же самое, что было выше, потому что твой изначальный пример принимал float-ы, а этот нет.
То есть в более-менее небанальной реализации такой казалось бы простой задачи скорее всего придется валидировать именно строку.