如何使用Python中的termcolor在数组中使用不同颜色打印?

时间:2016-05-27 06:41:13

标签: python colors terminal

我是python的新手,写了我的第二个游戏,因为我觉得这是学习一门新语言的最佳方式。我的代码如下:

守则:

ExtinctionCoeff

我想,当用户猜到我只想让字母X为红色时,正如关键所示。

当前输出:

enter image description here

请注意,只有“X”为红色且方括号为青色,这基本上是我想要在游戏中实现的。

理想输出:

enter image description here

问题:

如何按上述方式进行打印?

2 个答案:

答案 0 :(得分:2)

问题代码是:

print colored(" ".join(row),"cyan")

你需要:

print ' '.join(colored(element, 'cyan') if element != 'X'
               else colored(element, 'red')
               for element in row)

修改

更一般地说,您可以根据角色查找颜色。一个常见的工具是使用Python dict,它提供了键和值之间的映射。

>>> color_key = {
...     'X': 'red',
...     'H': 'magenta'}
>>> color_key['X']
'red'

如果您使用get,则可以提供缺失密钥的默认值:

>>> color_key.get('[', 'cyan')
'cyan'

否则你会引发异常:

>>> color_key['[']
...KeyError...

用法:

print ' '.join(colored(element, color_key.get(element, 'cyan')
           for element in row)

答案 1 :(得分:1)

您将要更新print_board方法。

def print_board(board):
    for row in board:
        print colored(" ".join(row),"cyan")

如果不编写您需要编写的确切代码,则需要将其更改为:

def print_board(board):
    for row in board:
        for each cell in the row:
            if it is a W:
                print it cyan
            if it is an X:
                print it in red
        move to a new line now

通常在打印时会输入换行符,因此您需要退房 How to print without newline or space?