2017-02-14 9 views
-3

Мне интересно, есть ли способ добавить строку в конец строки ввода.Проблема с форматированием Python 3.4.4

print('┌──────────────────────────────────────────────────────────┐') 
ItemCost = float(input('│Enter item cost: ')) 

Это выводит

┌─────────────────────────────────────────────────────────┐ 
│Enter item cost: xxxx 

Я хотел бы, чтобы вывести

┌─────────────────────────────────────────────────────────┐ 
│Enter item cost: xxxx         │ 

(За исключением части в "")

Любая помощь будет appriciated спасибо вам

+1

Пожалуйста, отредактируйте ваш вопрос, чтобы показать [что вы пробовали до сих пор] (http://whathaveyoutried.com). Вы должны включить [mcve] кода, с которым у вас возникают проблемы, тогда мы можем попытаться помочь с конкретной проблемой. Вы также должны прочитать [ask]. –

+0

@TobySpeight: Я думаю, что вопрос достаточно хорош. OP показывает некоторый код. Помимо знания ответа, я не знаю, как выглядела бы неудачная попытка. Реальная проблема, с которой сталкивается OP, заключается в том, что он рассматривает вопрос о том, как добавить строку в конец входного приглашения, а не вопрос о том, как переместить курсор. После того, как я передумал, я буду держать пари, что он мог бы найти ответ. –

ответ

1

Вы может использовать escape-коды ANSI для перемещения курсора после записи полной строки. Обратите внимание, однако, что с input записывает запрос на стандартную ошибку, вы, вероятно, захотите включить обе строки в вызове input.

prompt = ('┌──────────────────────────────────────────────────────────┐\n' 
      '│Enter item cost: \033[s         |\033[u')) 

ItemCost = float(input(prompt)) 

\033[s сообщает терминалу запомнить текущую позицию курсора; \033[u указывает терминалу переместить курсор на текущую позицию.

Для этого необходимо, чтобы ваш терминал понимал коды выхода ANSI; более портативным решением будет использование библиотеки curses.

+1

Ницца. Коды эмиссии ANSI стали для меня новой концепцией. Вот ссылка [Wikipedia link] (https://en.wikipedia.org/wiki/ANSI_escape_code), если кто-то хочет прочитать больше. –

+0

Спасибо за эту ссылку @StevenRumbalski, это будет полезно и интересно узнать! – Artemis

+0

Где было указано, что выход был на ANSI-совместимый терминал? Я не вижу ничего в этом вопросе. Даже если он пишет терминал, вы должны использовать стандартные переносные средства для получения своих управляющих последовательностей. –

0

@ Ответ на вопрос от chepner превосходный, если ваш терминал понимает коды выхода ANSI.

следующие работы на терминалах, которые не (например, Windows PowerShell):

>>> prompt = '''\ 
... ┌──────────────────────────────────────────────────────────┐ 
... │Enter item cost:           │''' + 42 * '\b' 
>>> item_cost = float(input(prompt)) 
┌──────────────────────────────────────────────────────────┐ 
│Enter item cost: 12.5          │ 
>>> item_cost 
12.5 

К сожалению, забой ('\b') можно только переместить курсор на одной строке, так что вы не можете поставить дно на вы вводите поле и обратное пространство до предыдущей строки. Для этого вам придется использовать подход curses.

 Смежные вопросы

  • Нет связанных вопросов^_^