2016-06-02 17 views
1

特定の文字列をPythonでさまざまな色で印刷したいと思います。特定の文字列をtermcolor.coloredで別の色で印刷しますか?

enter image description here

:私のような出力を持つことができるなど、 [X]が赤になり、リストに [H]はマゼンタとして印刷されたときにように

board_p1 = [] 
board_pc = [] 

board_size=6 

for x in range(board_size): 
    board_p1.append(["[W]"] * board_size) 
    board_pc.append(["[W]"] * board_size) 

def print_board(board): 
    if board == board_p1: 
     print colored("\n Computers Board: ",attrs=['underline']) 
     for row in board: 
      print " ".join(colored(element,"cyan") if element != "[X]" else colored(element,"red") if element != "[H]" else colored(element,"magenta") for element in row) 
    if board == board_pc: 
     print colored("\n Players Board:  ",attrs=['underline']) 
     for row in board_pc: 
      print " ".join(colored(element,"cyan") if element != "[S]" else colored(element,"green") if element != "[X]" else colored(element,"red") if element != "[H]" else colored(element,"magenta") for element in row) 

:私は、コードを変更する必要があります上記の方法で印刷するために

print " ".join(colored(element,"cyan") if element != "[S]" else colored(element,"green") if element != "[X]" else colored(element,"red") if element != "[H]" else colored(element,"magenta") for element in row) 

私はとの難しさを持っています。

Q:はどのように私は、[X]がリストに示されている場合、それが赤で印刷したものように、上記のコードの行を編集/変更することができ、[S]でマゼンタで緑と[H]?

答えて

2

次が原因追加括弧を正しく解析であろうが:

print " ".join(colored(element,"cyan") if element != "[S]" else (colored(element,"green") if element != "[X]" else (colored(element,"red") if element != "[H]" else colored(element,"magenta"))) for element in row) 

しかしによる否定条件に、私はそれを例に説明して描かれたマッピングを生成する場合伝えることができませんでしたあなたの質問。

しかし、私はこのように辞書を使用する方が良いだろうことを示唆しているだろうとの記述から行く:

element_colors = {'[W]': 'cyan', '[X]': 'red', '[S]': 'green', '[H]': 'magenta'} 

print " ".join(colored(element, element_colors[element]) for element in row) 
+0

パーフェクト、ありがとうございました!私は辞書を使ってあなたの提案を好みます。これは、タスクを行うためのよりシンプルで効率的な方法です。 – 3kstc

関連する問題