while True
будет зацикливаться вечно, если вы не разорвете его с помощью break
.
Ошибка ввода-вывода, вероятно, связана с тем, что, когда вы один раз выполнили цикл, последнее, что вы делаете, это f.close()
, который закрывает файл. Когда выполнение продолжается с циклом в строке currentmoney = float(f.readline())
: f
будет закрытым дескриптором файла, из которого вы не сможете прочитать.