Сначала 2 запишется в largest, а потом идёт сравнение "если 2 меньше, чем 2 (x < largest)", что точно неверно => условие не выполняется. И так со всеми остальными числами.
spoilerЯ бы сделал через одно сравнение:
if x > largest:
largest, not_largest = x, largest
Таким образом мы получим новый максимум, а предыдущий автоматически запишется в пред_макс.