Чтобы распечатать каждые 100 итераций, я бы предложил
if i % 100 == 0: ...
Если вы не хотите печатать в первый раз, то, возможно,
if i and i % 100 == 0: ...
(как уже отмечалось в другом ответе, i = i + 1
является суперобязательным, учитывая, что i
в любом случае является управляющей переменной цикла for - это не особенно повреждает , а лишь несколько излишне и не является действительно имеет отношение к вопросу о том, почему ваш if
не срабатывает).
Хотя базирование условия на t
может показаться привлекательным, t == int(t)
вряд ли сработает, если t_step
не кратно 1.0 / 2**N
для некоторого целого числа N
- дроби не могут быть точно представлены в плавающей запятой если это условие не выполняется, потому что числа с плавающей запятой используют двоичную базу. (Вы могли бы использовать decimal.Decimal
, но это серьезно повлияло бы на скорость ваших вычислений, поскольку вычисления float
напрямую поддерживаются аппаратным обеспечением вашей машины, а десятичные вычисления - нет).