Cześć,
spróbuj uruchomić ten program z terminala - ostatnio jeden kolega z forum używał PyCharm i nie widział błędu dopóki nie użył terminala. Jak błąd pojawi się w terminalu, to opisz jak uruchamiasz to w PyCharm, bo mi zawsze pojawiają się opisy do błędów, które występują.
Problem leży w tym, że pierwsza pętla wykonuje się dobrze do ostatniego elementu w zmiennej linia. Ostatnim elementem jest biały znak przejścia do nowej linii: \n, który zawsze jest na końcu wiersza. Możesz się go pozbyć z wykorzystaniem funkcji rstrip. Pozbędziesz się wszystkich białych znaków z prawej strony tego ciągu znaków.
linia = linia.rstrip()
Możesz dodatkowo zabezpieczyć się i sprawdzić czy dany znak, da się przekonwertować z typu string na typ int, z wykorzystaniem zarządzania wyjątkami:
for i in linia:
try:
int(i)
except ValueError:
print(f'To nie jest liczba {i}')
else:
# tutaj dalsza część pętli
lub testu:
for i in linia:
if i.isdigit():
# tutaj dalsza część pętli
Pamiętaj o odpowiednich wcięciach (indentancji), bo przy tym układzie, który podesłałeś to do dalszej części programu trafi tylko ostatnia linia, która jest w pliku.
Pozdrawiam,
Nelson