2017-02-14 6 views
-3

入力行の最後に文字列を追加する方法があるのだろうかと思います。Python 3.4.4書式設定の問題

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

これは、私は任意の助けがにappriciatedされるだろう出力

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

( "" の部分を除く)

にそれを希望

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

ありがとう出力

+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[sは、現在のカーソルの位置を記憶するように端末に指示します。 \033[uは、現在記憶されている位置にカーソルを移動するように端末に指示する。

これは、端末がANSIエスケープコードを理解することを要求します。よりポータブルなソリューションは、cursesライブラリを使用することです。

+1

ニース。 ANSIのエスケープコードは私の新しいコンセプトでした。誰かがもっと読むことを望むなら、[Wikipediaのリンク](https://en.wikipedia.org/wiki/ANSI_escape_code)があります。 –

+0

このリンク@StevenRumbalskiをありがとう、それは発見するのに便利で楽しいでしょう! – Artemis

+0

出力はANSI準拠の端末に出力されているとはどこですか?私は質問のどこにでもそれを見ない。ターミナルに書き込んでいる場合でも、制御シーケンスを取得するための標準の移植可能な手段を使用する必要があります。 –

0

あなたの端末がANSIエスケープコードを理解している場合、@ chepnerの回答は優れています。

(などのWindows PowerShellなど)していない端末で次の作品:

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

残念ながら、バックスペース('\b')は、単一の行にカーソルを移動することができますので、あなたは上の下に置くことができません前の行までボックスとバックスペースを入力します。そのためには、cursesというアプローチを使用する必要があります。