Это не будет работать в Windows, но должно работать в Linux / Unix.
print("Francis - Hello Stranger ! What's your name ?")
name = input("??? - My name is ")
print(f"\033[A??? - My name is ***{name}*** and I need to go in town.")
print(f"Francis - Oh, hello {name}. You need to go South.")
\033[A
- это последовательность символов для перемещения курсора на одну строку вверх.
Демонстрация:
>>> def foo():
... print("Francis - Hello Stranger ! What's your name ?")
... name = input("??? - My name is ")
... print(f"\033[A??? - My name is ***{name}*** and I need to go in town.")
... print(f"Francis - Oh, hello {name}. You need to go South.")
...
>>> foo()
Francis - Hello Stranger ! What's your name ?
??? - My name is ***Arnaud*** and I need to go in town.
Francis - Oh, hello Arnaud. You need to go South.
Вкл. Windows (не очень хорошо):
>>> def foo():
... print("Francis - Hello Stranger ! What's your name ?")
... name = input("??? - My name is ")
... print(f"\033[A??? - My name is ***{name}*** and I need to go in town.")
... print(f"Francis - Oh, hello {name}. You need to go South.")
...
>>> foo()
Francis - Hello Stranger ! What's your name ?
??? - My name is Arnaud
←[A??? - My name is ***Arnaud*** and I need to go in town.
Francis - Oh, hello Arnaud. You need to go South.
>>>
Комментарий Чепнера по поводу исследования curses
готов, если вам нужно заставить это работать на Windows.
Я только что обнаружил, что curses
не поддерживается в Windows.
Объяснение
Запись \033[A
на выход перемещает курсор на одну строку назад туда, где был выполнен оператор input
. Вместо того, чтобы показать, как теперь сделать интервал до конца ??? - My name is
, чтобы записать остаток того, что должно быть написано (то есть ***{name} and I need to go in town.
), мы просто переписываем ??? - My name is
, что имеет тот же эффект, что и интервал над строка.