Python输出复杂的行,浮点数由值着色

时间:2013-03-22 21:40:34

标签: python printing colors floating-point format

这是我的第一个python程序,我第一次询问有关堆栈溢出的问题,所以如果我的代码乱七八糟,或者我的问题格式错误,我会道歉。

我想打印我已经打印的相同行,但每个浮点数应该是基于其值的不同颜色。 (具体为>.7为绿色,.7<为红色)这样做的最佳方法是什么?

oreName=[#string names]

#escape char? I know there has to be a better way than this
#but this is the best ive come up with as the escape char didnt
#work the way I thought it should for '%'
char = '%'

netProfitBroker=[
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]]

##code that populates netProfitBroker

def printOutput(array):
  "this prints all of the lines"
  for i in range(0,10):
    print oreName[i]+"=   %.3f \t 5"%(array[0][i])+char+"=%.3f \t10"%(array[1][i])+char+"=%.3f"%(array[2][i])    


print "\nnet profit brokered"
printOutput(netProfitBroker)

输出看起来有点像这样:(当我在这里复制输出时,我丢失了一些/所有的空白格式)

net profit brokered

Veldspar   =   0.234     5%=0.340   10%=-0.017
Scordite   =   0.752     5%=0.297   10%=0.259
Pyroxeres  =   0.406     5%=1.612   10%=2.483
Plagioclase=   1.078     5%=0.103   10%=1.780
Omber      =   -7.120    5%=5.416   10%=4.612
Kernite    =   -10.822   5%=15.366  10%=6.626
Jaspet     =   17.772    5%=49.278  10%=62.380
Hemorphite =   -35.431   5%=82.912  10%=141.027
Gneiss     =   8.086     5%=-4638.549   10%=-3610.570
Arkonor    =   349.867   5%=-545.284    10%=-340.298

基本上:

"ore name=" arrayVal1 "5%="arrayVal2 "10%="arrayVal3

所有数组值应打印到3位小数。

1 个答案:

答案 0 :(得分:16)

您可以在打印开头使用ASCII颜色代码来更改颜色,例如RED为'\033[91m',BLUE为'\033[94m'

<强> e.g

if array[0][i] > 7:
   print '\033[94m' + oreName[i]+"=   %.3f \t 5"%(array[0][i])
elif array[0][i] < 7:
   print '\033[91m' + oreName[i]+"=   %.3f \t 5"%(array[0][i])

您可以阅读有关ASCII转义码here的信息。

修改 添加了其他示例代码。

以下是您可以使用的一些常见颜色的列表:

Red = '\033[91m'
Green = '\033[92m'
Blue = '\033[94m'
Cyan = '\033[96m'
White = '\033[97m'
Yellow = '\033[93m'
Magenta = '\033[95m'
Grey = '\033[90m'
Black = '\033[90m'
Default = '\033[99m'

此外,如评论中所述。您可以链接这些以在同一行上获得不同的颜色。

print '\033[91m' + 'Red' + "\033[99m" + 'Normal' + '\033[94m' + 'Blue

你甚至可以做一个功能。

# Store a dictionary of colors.
COLOR = {
    'blue': '\033[94m',
    'default': '\033[99m',
    'grey': '\033[90m',
    'yellow': '\033[93m',
    'black': '\033[90m',
    'cyan': '\033[96m',
    'green': '\033[92m',
    'magenta': '\033[95m',
    'white': '\033[97m',
    'red': '\033[91m'
}


def print_with_color(message, color='red'):
    print(COLOR.get(color.lower(), COLOR['default']) + message)


print_with_color('hello colorful world!', 'magenta')
print_with_color('hello colorful world!', 'blue')