Поскольку вы обрабатываете только одну строку за раз, интерпретатор python выдает ошибку, если вы пишете только if True:
. В обычном интерпретаторе это вызовет многострочное редактирование и начнет выполняться только тогда, когда вы создадите пустую строку.
Если вы, с другой стороны, поместите что-то после оператора if, это сработает (например, if True: print("true")
), но вы не можете связывать операторы if друг с другом, как пытаетесь это сделать. Однако вы можете связать обычные операторы, такие как if True:print("first line");print("second line")
.
Та же проблема касается функций. Они должны иметь оператор, следующий за определением, прежде чем их можно будет интерпретировать, и обычно вам будет разрешено набрать это определение до того, как функция будет прочитана.
Вы можете изменить свой код, чтобы учесть это поведение, чтобы, если строка заканчивается на :
, вы продолжали читать ввод и выполняли его только после того, как пустая строка была передана в качестве ввода.