Как добавить строку сразу после ввода в Python 3? - PullRequest
1 голос
/ 06 января 2020

Я хочу создать небольшую игру в Python 3, где, когда вы отвечаете на вопрос с помощью ввода, код автоматически добавляет что-то сразу после вас в той же строке:

1  print("Francis - Hello Stranger ! What's your name ?")
2  name = input("??? - My name is ")
3  print(f"Francis - Oh, hello {name}. You need to go South.")

Итак, здесь я просто напишу свое имя «Арно» и хотел бы, чтобы программа автоматически добавляла предложение («а мне нужно go в городе») сразу после «Арно» в строке 2 (после моего ввода ).

Это должно выглядеть так:

1  Francis - Hello Stranger ! What's your name ?
2  ??? - My name is ***Arnaud*** and I need to go in town. #Here, I just write my name "Arnaud"
3  Francis - Oh, hello Arnaud. You need to go South.

Но я не понимаю, как добавить строку или еще сразу после ввода в той же строке. Я попытался с функцией print ("Something", end = ""), но не сработало.

1  print('The cat do "Mi-', end="")
2  print('AOU!"')
3  
4  print('I\'am thinking of : ', end="")
5  internalThought = input ("", end="")
6  print(".")

Ответы [ 3 ]

1 голос
/ 06 января 2020

Это не будет работать в 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, что имеет тот же эффект, что и интервал над строка.

0 голосов
/ 06 января 2020

Вы не можете напечатать строку сразу после функции input () в той же строке в python3. Существуют сложные обходные пути для создания пользовательских решений, но вам нужно будет переписать исходный код для функции input (), поэтому не используйте функцию input ().

0 голосов
/ 06 января 2020

Эй, ты можешь сделать это так! print (" ?? - My name is {0} and I need to go in town " .format(input()))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...