<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 This is a package to simply create tables to be displayed in IPython. The tables are rendered as both HTML and LaTeX, so they work both in the browser and if you convert the notebook to LaTeX.
The simplest case is a plain grid
Step1:  You can add a header row like this
Step2:  Table also accepts dicts (or any mapping) with keys as column headers and values as column contents. The order of columns is undefined unless the mapping is an OrderedDict.
Step3:  The number of column values (rows) need not be equal
Step4:  You can build a table incrementally using Table.append_row(). If you need it, rows also have an append_cell() method.
Step5:  You can style cells with the bg_colour and text_colour parameters. This only works in HTML for the moment; if you convert the notebook to LaTeX, the colours will be ignored.
<ASSISTANT_TASK:>
Python Code:
Table((4, 1, 8),
      (9, 7, 3),
      (5, 2, 6))
Explanation: This is a package to simply create tables to be displayed in IPython. The tables are rendered as both HTML and LaTeX, so they work both in the browser and if you convert the notebook to LaTeX.
The simplest case is a plain grid:
End of explanation
Table(TableHeaderRow('a','b','c'),
      (1,  2,  3),
      (2,  4,  6),
     )
Explanation: You can add a header row like this:
End of explanation
Table({'a': (1, 2),
       'b': (2, 4),
       'c': (3, 6)})
Explanation: Table also accepts dicts (or any mapping) with keys as column headers and values as column contents. The order of columns is undefined unless the mapping is an OrderedDict.
End of explanation
Table({'a': (1, 2),
       'b': (2,),
       'c': (3, 6)})
Explanation: The number of column values (rows) need not be equal:
End of explanation
# Computing values
t = Table(TableHeaderRow('number', 'square', 'cube'))
for x in range(1, 11):
    t.append_row((x, x**2, x**3))
t
Explanation: You can build a table incrementally using Table.append_row(). If you need it, rows also have an append_cell() method.
End of explanation
# Styling determined by code
t = Table(TableHeaderRow('divisions', 'result'))
num = 55
for x in range(7):
    if num < 1:
        resultcell = TableCell(num, bg_colour='DarkBlue', text_colour='white')
    else:
        resultcell = TableCell(num)
    t.append_row((x, resultcell))
    num /= 3
t
Explanation: You can style cells with the bg_colour and text_colour parameters. This only works in HTML for the moment; if you convert the notebook to LaTeX, the colours will be ignored.
End of explanation
<END_TASK>