16

Python と StackOverflow の両方が初めてなので、少し助けてください。私はPythonで色を印刷したいのですが、Googleで調べましたが、運が悪い:(毎回混乱してしまい、どれもうまくいきませんでした.これは私が入力したコードです.

answer = input ("Wanna go explore? OPTIONS : Yes or No")
if answer == "no":
    print("Awww, come on, don't be like that, lets go!")
elif answer == "yes":
    print ("Great! Lets go!")
else: 
    print("Whats that? I couldn't hear you!")

ここで、OPTIONS を緑に、Yes を青に、No を赤にしたいと思います。どうすればこれを達成できますか?

4

8 に答える 8

9

IDLE シェルでカラーを印刷したい場合は、この機能を実装していないため、ASCI エスケープ コードを使用した回答が役に立ちません。

IDLE に固有のハックがあり、そのオブジェクトに直接書き込み、デフォルトで緑色で表示PyShellされるなど、IDLE が既に定義しているテキスト タグを指定できます。"STRING"

import sys

try:
    shell = sys.stdout.shell
except AttributeError:
    raise RuntimeError("you must run this program in IDLE")

shell.write("Wanna go explore? ","KEYWORD")
shell.write("OPTIONS","STRING")
shell.write(" : ","KEYWORD")
shell.write("Yes","DEFINITION")
shell.write(" or ","KEYWORD")
shell.write("No","COMMENT")
answer = input()

IDLE で実行すると、次のプロンプトが表示されます。

ここに画像の説明を入力

以下は、使用可能なすべての有効なタグのリストです。

print("here are all the valid tags:\n")

valid_tags = ('SYNC', 'stdin', 'BUILTIN', 'STRING', 'console', 'COMMENT', 'stdout',
              'TODO','stderr', 'hit', 'DEFINITION', 'KEYWORD', 'ERROR', 'sel')

for tag in valid_tags:
    shell.write(tag+"\n",tag)

は、選択されているテキストを表すという特別な点に注意してください。その'sel'ため、他の何かをクリックすると選択が解除されます。同様に、コピー用に選択されたテキストを開始するために使用することもできます。

于 2016-03-23T16:40:54.617 に答える
8

端末で ansi カラーを印刷するための非常に単純で直接的な方法が必要な場合は、ansicolor パッケージ モジュールをチェックアウトできます。

pip経由でインストール

$ pip install ansicolors

使用法スニペット

from colors import red, green, blue
print red('This is red')
print green('This is green')
print blue('This is blue')

from colors import color
for i in range(256):
    print color('Color #%d' % i, fg=i)

ピップについての注意

pip は Python のパッケージ マネージャーです。インストールしていない場合はpip、次の方法でインストールできますeasy_install pip

を持っていない場合は、http: //peak.telecommunity.com/dist/ez_setup.pyeasy_installをダウンロードして実行します。

python ez_setup.py
easy_install pip

Windows コマンド シェルの色

上記の ANSI カラーは、Windows コマンド シェルでは機能しません。このactivestateコードスニペットを見てみてください

于 2012-06-19T20:14:03.853 に答える
6

ANSI エスケープ シーケンスをサポートする端末やシェルを使用している場合は、次のように動作するはずです。

print("Blah blah \033[0;32mthis part will be green\033[00m blah blah.")
print("Blah blah \033[0;31mthis part will be red\033[00m blah blah.")

bashLinuxで動作することを確認できます。さまざまな文字シーケンス/値の影響を説明する包括的な表など、詳細については、ANSI エスケープ コードに関するウィキペディアのページを参照してください。これを標準的な解決策として推奨するものではありませんが、目的には十分かもしれません。

于 2012-06-19T20:24:30.433 に答える
5

モジュールをチェックアウトしcursesます。これにより、ステートメントが置き換えprintられ、画面上のテキストの配置と属性を完全に制御できるようになります。

于 2012-06-19T20:10:43.290 に答える
0

端末にカラーで出力したい場合は、使用している端末のエスケープ コードを使用する必要があります。unix/linux システムでは、cursesモジュールを使用するか、出力文字列の一部として直接bash カラー コードを使用できます。この質問によると、Windowsでこれを行う簡単な方法はないようです。

于 2012-06-19T20:17:14.320 に答える