Dzm
Основную трудность вызывает вывод сложной шапки у таблицы.
Вообще, когда тебе надо такое сделать (что-то большое, сложное и запутанное), нужно применить метод декомпозиции. Ты должен взять это большое и задать вопрос “из каких самых больших структур это состоит?”, потом берёшь каждую из полученных структур и делаешь с ней то же самое, пока не дойдёшь до самых мельчайших элементов. И вот после этого ты уже видишь, что тебе надо написать.
Как сделать эту таблицу:
1. Задаём вопрос для разбиения на максимальные структуры
- Из каких самых больших структур это состоит?
- Из заголовка таблицы и тела таблицы.
2. Задаём вопрос для разбиения на максимальные структуры первой полученной структуры (заголовка таблицы)
- Из каких самых больших структур это состоит?
- Из двух разных строк: строки экспериментов и строки режимов.
2.1. Задаём вопрос для разбиения на максимальные структуры первой полученной подструктуры (строки экспериментов заголовка таблицы)
- Из каких самых больших структур это состоит?
- Из колонок: пустой, с именем эксперимента, с именем эксперимента.
2.2. Задаём вопрос для разбиения на максимальные структуры второй полученной подструктуры (строки режимов заголовка таблицы)
- Из каких самых больших структур это состоит?
- Из колонок: с образцом, с режимом, с режимом, с режимом, с режимом.
3. Задаём вопрос для разбиения на максимальные структуры второй полученной структуры (тела таблицы)
- Из каких самых больших структур это состоит?
- Из строк.
3.1. Задаём вопрос для разбиения на максимальные структуры полученной подструктуры (строки тела таблицы)
- Из каких самых больших структур это состоит?
- Из колонок: с именем, с результатом эксперимента, с результатом эксперимента, с результатом эксперимента, с результатом эксперимента.
Вот теперь ты выполнил декомпозицию и тебе нужно сделать свою функцию для каждого уровня декомпозиции.
вывести_таблицу()
вывести_заголовок_таблицы()
вывести_первый_ряд_заголовка()
вывести_пустую_колонку
вывести_колонку_с_именем1
вывести_колонку_с_именем2
вывести_второй_ряд_заголовка()
вывести_колонку_с_именем
вывести_колонку_с_режимом1
вывести_колонку_с_режимом2
вывести_колонку_с_режимом1
вывести_колонку_с_режимом2
вывести_тело_таблицы()
цикл для каждого набора значений
вывести_ряд_значений()
вывести_колонку_с_именем
вывести_колонку_с_результатом1
вывести_колонку_с_результатом2
вывести_колонку_с_результатом3
вывести_колонку_с_результатом4
конец цикла
Всё, дальше по этому псевдокоду пишешь уже реальный код. То есть тебе нужно написать шесть функций.
>>> def print_table(data):
... print_header()
... print_body(data)
...
>>> def print_header():
... print_header_line1()
... print_header_line2()
...
>>> def print_header_line1():
... print('header line 1')
...
>>> def print_header_line2():
... print('header line 2')
...
>>> def print_body(data):
... for row in data:
... print_body_line(row)
...
>>> def print_body_line(row):
... print('body line', row)
...
>>>
>>> print_table([['name1', 'a1', 'b1'], ['name2', 'a2', 'b2']])
header line 1
header line 2
body line ['name1', 'a1', 'b1']
body line ['name2', 'a2', 'b2']
>>>