Печать определенных строк разного цвета с помощью termcolor.colored?
Я хотел бы напечатать определенные строки в разных цветах в Python. Мне нужно изменить код:
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)
так что когда в списке a [H]
будет напечатано как пурпурный, [X]
будет красным, и т.д. У меня может быть выход вроде:
![введите описание изображения здесь]()
У меня возникают трудности с:
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 ] в пурпуре?
Ответы
Ответ 1
Хотя следующее будет правильно анализироваться из-за добавленных круглых скобок:
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)