2017-02-14 77 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],然後我們可以嘗試幫助解決特定問題。你還應該閱讀[問]。 –

+0

@TobySpeight:我認爲這個問題很好。 OP確實顯示了一些代碼。除了知道答案之外,我不知道一個不成功的嘗試會是什麼樣子。 OP正在處理的真正問題是他正在考慮如何將字符串添加到輸入提示的末尾,而不是如何重新定位光標的問題。一旦重新構建,我敢打賭他可以用google搜索答案。 –

回答

1

您可以在寫完整行後使用ANSI轉義碼重新定位光標。但請注意,由於input會將提示寫入標準錯誤,因此您可能希望在調用input時包含這兩行。

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

ItemCost = float(input(prompt)) 

\033[s告訴終端記住光標的當前位置; \033[u通知終端將光標移動到當前記憶的位置。

這要求您的終端了解ANSI轉義碼;更便攜的解決方案是使用curses庫。

+1

不錯。 ANSI轉義碼對我來說是一個新概念。如果有人想閱讀更多內容,請點擊[維基百科鏈接](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的方法。