Проблема в том, что while
проверяет i = 0, i = 1, u = 2, i = 3 и i = 4. Когда это терпит неудачу, это ломается, но прежде, чем это ломается, это обновляет i еще раз, и устанавливает i в i ++ (i = 5)
Итак, вы получите
while: i0
while: i1
while: i2
while: i3
while: i4
after while loop, i=5
Но предложение for
не обновляет i после сбоя сравнения, поэтому вы получаете
first for: i=0
first for: i=1
first for: i=2
first for: i=3
after first loop, i=4
Если вы хотите сопоставить оба предложения, попробуйте увеличить i внутри while
, а не в самом условии.