'Python output complex line with floats colored by value
This is my first python program and my first asking a question on stack overflow so I apologize if my code is a mess and or if my question is ill-formatted.
I would like to print the same line I'm already printing, but each float should be a different color based on its value. (specifically >.7 is green, .7< is red) What is the best way to do this?
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)
the output looks a bit like this: (I lost some/all of my whitespace formatting when I copied the output here)
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
essentially:
"ore name=" arrayVal1 "5%="arrayVal2 "10%="arrayVal3
All the array vals should be printed out to 3 decimal places.
Solution 1:[1]
for Easy copy-paste after print:
for style in range(8):
for fg in range(30,38):
s1 = ''
for bg in range(40,48):
myform = ';'.join([str(style), str(fg), str(bg)])
skel = '\x1b[{};{};{}m'.format(myform.split(';')[0],myform.split(';')[1],myform.split(';')[2])
s1 += f'\x1b[{myform}m {repr(skel)} \x1b[0m'
print(s1)
print('\n')
This code print multiple pretty lines with different colors. example:
'\x1b[5;31;40m' '\x1b[5;31;41m' '\x1b[5;31;42m' '\x1b[5;31;43m' for easy copy-paste to code.
After print add to you code:
mycolor = '\x1b[5;35;43m'
rest = '\x1b[0m'
and print for preview:
print(f"{mycolor}Hello world!{rest}")
for preview: Stack attach
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
