2017-02-14 2 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

너 ANSI 이스케이프 코드를 사용하여 전체 행을 작성한 후 커서의 위치를 ​​변경할 수 있습니다. 그러나 input이 프롬프트를 표준 오류에 기록하므로 input에 대한 호출에 두 행을 모두 포함하고자 할 수 있습니다.

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

ItemCost = float(input(prompt)) 

은 커서에 현재 위치를 기억하도록 알려줍니다. \033[u은 커서가 현재 기억 된 위치로 이동하도록 터미널에 지시합니다.

이렇게하려면 터미널에서 ANSI 이스케이프 코드를 이해해야합니다. 더 이식 가능한 솔루션은 curses 라이브러리를 사용하는 것입니다.

+1

니스. ANSI 이스케이프 코드는 새로운 개념이었습니다. 누구나 더 읽고 싶다면 [Wikipedia 링크] (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 기반 접근 방식을 사용해야합니다.