2 * half_limit
совпадает с:
int(2) * int(half_limit)
half_limit повышается до целого числа для умножения, а результат выражения равен 300. Таким образом,
i < 2 * half_limit
становится
i < int(300)
, где меня переводят в int для фактического сравнения, но, поскольку я - беззнаковый символ, он никогда не может быть больше 255 (при условии, что наши беззнаковые символы равны 8 битам), поэтому это сравнение действительно:
int(smaller than 256) < int(300)
, что, конечно, всегда верно.