6

私は次のコードを持っています:

num = int(raw_input("input number: "))
print "\b" * 20

コンソール出力は次のようになります

input number: 10

input number: 10ユーザーがを押した後、テキストを削除したいのですがENTER。バックスペースキー\bはそれを行うことができません。

4

4 に答える 4

7

これはほとんどのUNIXおよびWindowsターミナルで機能します...非常に単純なANSIエスケープを使用します。

num = int(raw_input("input number: "))
print "\033[A                             \033[A"    # ansi escape arrow up then overwrite the line

Windowsでは、次のhttp://www.windowsnetworking.com/kbase/windowstips/windows2000/usertips/miscellaneous/commandinterpreteransisupport.htmlを使用してANSIサポートを有効にする必要がある場合があることに注意して ください。

「\033[A」文字列は、端末によってカーソルを1行上に移動すると解釈されます。

于 2012-05-31T08:19:48.993 に答える
1

カーソルを動かす「ワードバック」や「ラインバック」などの制御シーケンスがあります。したがって、カーソルを削除するテキストの先頭に戻し、スペースでオーバーライドしてみることができます。しかし、これはすぐに複雑になります。ありがたいことに、Pythonには「高度な端末処理」のための標準のcursesモジュールがあります。

これに関する唯一の問題は、現時点ではクロスプラットフォームではないことです。そのモジュールはWindowsに移植されたことがありません。したがって、Windowsをサポートする必要がある場合は、コンソールモジュールを確認してください。

于 2012-05-31T08:16:24.113 に答える
1
import sys

print "Welcome to a humble little screen control demo program"
print ""

# Clear the screen
#screen_code = "\033[2J";
#sys.stdout.write( screen_code )

# Go up to the previous line and then
# clear to the end of line
screen_code = "\033[1A[\033[2K"
sys.stdout.write( screen_code )
a = raw_input( "What a: " )
a = a.strip()
sys.stdout.write( screen_code )
b = raw_input( "What b: " )
b = b.strip()
print "a=[" , a , "]"
print "b=[" , b , "]"
于 2015-07-02T04:12:09.130 に答える
-2

あなたはosモジュールを使うことができます

import os
os.system('clear')

「cls」と「clear」は、ターミナル(つまり、DOSプロンプトまたはターミナルウィンドウ)をクリアするコマンドです。

IDLEの場合:できる最善の方法は、画面をたくさんの行を下にスクロールすることです。例:

print "\n" * 100
于 2012-05-31T08:15:17.763 に答える