Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/222: Рейтинг темы: голосов - 222, средняя оценка - 4.89
3 / 2 / 1
Регистрация: 02.01.2019
Сообщений: 3

Таблица с изменяемым размером

21.03.2019, 22:17. Показов 47312. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализуйте класс Table, который хранит целые числа в двумерной таблице. При инициализации Table(rows, cols) экземпляру передаются число строк и столбцов в таблице. Строки и столбцы нумеруются с нуля.

table.get_value(row, col) — прочитать значение из ячейки в строке row, столбце col. Если ячейка с индексами row и col не лежит внутри таблицы, нужно вернуть None.

table.set_value(row, col, value) — записать число в ячейку строки row, столбца col. Гарантируется, что в тестах будет в запись только в ячейки внутри таблицы.

table.n_rows() — вернуть число строк в таблице

table.n_cols() — вернуть число столбцов в таблице

table.delete_row(row) — удалить строку с номером row

table.delete_col(col) — удалить колонку с номером col

table.add_row(row) — добавить в таблицу новую строку с индексом row. Номера строк >= row, должны увеличится на единицу. Новая строка состоит из нулей.

table.add_col(col) — добавить в таблицу новую колонку с индексом colю Номера колонок >= col, должны увеличится на единицу. Новая колонка состоит из нулей.
----------------------------
Пример 1
Ввод

tab = Table(3, 5)
tab.set_value(0, 1, 10)
tab.set_value(1, 2, 20)
tab.set_value(2, 3, 30)
for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

tab.add_row(1)

for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

Вывод

0 10 0 0 0
0 0 20 0 0
0 0 0 30 0

0 10 0 0 0
0 0 0 0 0
0 0 20 0 0
0 0 0 30 0
-------------------------------------
Пример 2
Ввод
from solution import Table

tab = Table(2, 2)

for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

tab.set_value(0, 0, 10)
tab.set_value(0, 1, 20)
tab.set_value(1, 0, 30)
tab.set_value(1, 1, 40)

for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

for i in range(-1, tab.n_rows() + 1):
for j in range(-1, tab.n_cols() + 1):
print(tab.get_value(i, j), end=' ')
print()
print()

tab.add_row(0)
tab.add_col(1)

for i in range(-1, tab.n_rows() + 1):
for j in range(-1, tab.n_cols() + 1):
print(tab.get_value(i, j), end=' ')
print()
print()

Вывод

0 0
0 0

10 20
30 40

None None None None
None 10 20 None
None 30 40 None
None None None None

None None None None None
None 0 0 0 None
None 10 0 20 None
None 30 0 40 None
None None None None None
---------------------------------
Пример 3
Ввод
from solution import Table

tab = Table(1, 1)

for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

tab.set_value(0, 0, 1000)

for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

for i in range(-1, tab.n_rows() + 1):
for j in range(-1, tab.n_cols() + 1):
print(tab.get_value(i, j), end=' ')
print()
print()

tab.add_row(0)
tab.add_row(2)
tab.add_col(0)
tab.add_col(2)

tab.set_value(0, 0, 2000)
tab.set_value(0, 2, 3000)
tab.set_value(2, 0, 4000)
tab.set_value(2, 2, 5000)

for i in range(-1, tab.n_rows() + 1):
for j in range(-1, tab.n_cols() + 1):
print(tab.get_value(i, j), end=' ')
print()
print()

Вывод

0

1000

None None None
None 1000 None
None None None

None None None None None
None 2000 0 3000 None
None 0 1000 0 None
None 4000 0 5000 None
None None None None None

есть код но он не доработан

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Table(object):
 
    def __init__(self, rows, cols):
        self.field = [[0 for _ in range(cols)] for _ in range(rows)]
        self.rows = rows
        self.cols = cols
 
    def get_value(self, row, col):
        if row in range(self.rows) and col in range(self.cols):
            return self.field[row][col]
        return
 
    def set_value(self, row, col, value):
        self.field[row][col] = value
 
    def n_rows(self):
        return self.rows
 
    def n_cols(self):
        return self.cols
ОШИБКА
Ввод
from solution import Table

tab = Table(3, 5)
tab.set_value(0, 1, 10)
tab.set_value(1, 2, 20)
tab.set_value(2, 3, 30)
for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

tab.add_row(1)

for i in range(tab.n_rows()):
for j in range(tab.n_cols()):
print(tab.get_value(i, j), end=' ')
print()
print()

Ожидаемый результат
0 10 0 0 0
0 0 20 0 0
0 0 0 30 0

0 10 0 0 0
0 0 0 0 0
0 0 20 0 0
0 0 0 30 0

Вывод
0 10 0 0 0
0 0 20 0 0
0 0 0 30 0

Makefile:5: recipe for target 'run' failed
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2019, 22:17
Ответы с готовыми решениями:

Таблица с изменяемым размером
class Table: def __init__(self, row, col): self.row = row self.col = col self.matrix = for rowi in range(row): ...

Таблица с изменяемым размером
Написал класс таблицы с изменяемым размером, но при проверке есть ошибка(ошибка скорее всего в удалении или добавлении строк или...

Проблемы с Qmovie при создании интерфейса с изменяемым размером
Создаю учебный проект по PyQt5. Нашёл замечательную возможность отображать гифки в Qlable, с помощью Qmovie, создал простейший просмоторщик...

10
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
21.03.2019, 22:37
Лучший ответ Сообщение было отмечено Programist3000 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
class Table(object):
 
    def __init__(self, rows, cols):
        self._rows = rows
        self._cols = cols
        self._table = [[0] * cols for _ in range(rows)]
 
    def get_value(self, row, col):
        return (self._table[row][col] if 0 <= row < self._rows and 0 <= col < self._cols
                else None)
 
    def set_value(self, row, col, value):
        self._table[row][col] = value
 
    def n_rows(self):
        return self._rows
 
    def n_cols(self):
        return self._cols
 
    def delete_row(self, row):
        self._table.pop(row)
        self._rows -= 1
 
    def delete_col(self, col):
        for row in range(self._rows):
            self._table[row].pop(col)
        self._cols -= 1
 
    def add_row(self, row):
        self._table.insert(row, [0] * self._cols)
        self._rows += 1
 
    def add_col(self, col):
        for row in range(self._rows):
            self._table[row].insert(col, 0)
        self._cols += 1
 
def main():
    # Example 1
    tab = Table(3, 5)
    tab.set_value(0, 1, 10)
    tab.set_value(1, 2, 20)
    tab.set_value(2, 3, 30)
    for i in range(tab.n_rows()):
        for j in range(tab.n_cols()):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    tab.add_row(1)
 
    for i in range(tab.n_rows()):
        for j in range(tab.n_cols()):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    # Example 2
    tab = Table(2, 2)
 
    for i in range(tab.n_rows()):
        for j in range(tab.n_cols()):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    tab.set_value(0, 0, 10)
    tab.set_value(0, 1, 20)
    tab.set_value(1, 0, 30)
    tab.set_value(1, 1, 40)
 
    for i in range(tab.n_rows()):
        for j in range(tab.n_cols()):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    for i in range(-1, tab.n_rows() + 1):
        for j in range(-1, tab.n_cols() + 1):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    tab.add_row(0)
    tab.add_col(1)
 
    for i in range(-1, tab.n_rows() + 1):
        for j in range(-1, tab.n_cols() + 1):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    # Example 3
    tab = Table(1, 1)
 
    for i in range(tab.n_rows()):
        for j in range(tab.n_cols()):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    tab.set_value(0, 0, 1000)
 
    for i in range(tab.n_rows()):
        for j in range(tab.n_cols()):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    for i in range(-1, tab.n_rows() + 1):
        for j in range(-1, tab.n_cols() + 1):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
    tab.add_row(0)
    tab.add_row(2)
    tab.add_col(0)
    tab.add_col(2)
 
    tab.set_value(0, 0, 2000)
    tab.set_value(0, 2, 3000)
    tab.set_value(2, 0, 4000)
    tab.set_value(2, 2, 5000)
 
    for i in range(-1, tab.n_rows() + 1):
        for j in range(-1, tab.n_cols() + 1):
            print(tab.get_value(i, j), end=' ')
        print()
    print()
 
if __name__ == "__main__":
    main()
5
121 / 100 / 79
Регистрация: 30.11.2017
Сообщений: 230
21.03.2019, 22:56
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Table():
    def __init__(self,n,m):
        self.a =[list([0 for j in range(m)]) for i in range(n)]
 
    """прочитать значение из ячейки в строке row, столбце col. Если ячейка с индексами row и col не лежит внутри таблицы, нужно вернуть None."""
    def get_value(self, row, col):
        try:
            return self.a[row][col]
        except:
            return None
 
    """записать число в ячейку строки row, столбца col. Гарантируется, что в тестах будет в запись только в ячейки внутри таблицы."""
    def set_value(self, row, col, value):
        self.a[row][col] = value
 
    """вернуть число строк в таблице"""
    def n_rows(self):
        return len(self.a)
 
    """вернуть число столбцов в таблице"""
    def n_cols(self):
        if len(self.a) == 0:
            return 0
        else:
            return len(self.a[0])
 
    """удалить строку с номером row"""
    def delete_row(self, row):
        self.a.pop(row)
 
    """удалить колонку с номером col"""
    def delete_col(self, col):
        for i in self.a:
            i.pop(col)
 
    """добавить в таблицу новую строку с индексом row. Номера строк >= row, должны увеличится на единицу. Новая строка состоит из нулей."""
    def add_row(self, row):
        self.a.insert(row,[0 for i in range(len(self.a[0]))])
 
    """добавить в таблицу новую колонку с индексом col. Номера колонок >= col, должны увеличится на единицу. Новая колонка состоит из нулей."""
    def add_col(self, col):
        for i in self.a:
            i.insert(col,0)
2
11 / 11 / 1
Регистрация: 16.01.2020
Сообщений: 19
29.03.2020, 17:41
Моё решение проходит все тесты:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Table:
    def __init__(self, row, col):
        self.row = row
        self.col = col
        self.matrix = []
        for rowi in range(row):
            self.matrix.append([])
            for coli in range(col):
                self.matrix[rowi].append(0)
 
    def get_value(self, row, col):
        if row > (self.row - 1) or col > (self.col - 1) or row < 0 or col < 0:
            return None
        else:
            return self.matrix[row][col]
 
    def set_value(self, row, col, value):
        self.matrix[row][col] = value
 
    def n_rows(self):
        if not self.matrix:
            return 0
        else:
            return len(self.matrix)
 
    def n_cols(self):
        if not self.matrix:
            return 0
        else:
            return len(self.matrix[0])
1
29.03.2020, 17:46

Не по теме:

Prug4l, ну за год больше никто не жаловался что не проходит

0
48 / 44 / 4
Регистрация: 09.12.2019
Сообщений: 27
29.03.2020, 18:03
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Table:
    def __init__(self, rows, cols):
        self.field = [[0 for j in range(cols)] for i in range(rows)]
        self.rows = rows
        self.cols = cols
 
    def get_value(self, row, col):
        if (row < len(self.field) and row >= 0) and\
           (col < len(self.field[0]) and col >= 0):
            return self.field[row][col]
        return
 
    def set_value(self, row, col, value):
        self.field[row][col] = value
        return self.field
 
    def n_rows(self):
        return self.rows
 
    def n_cols(self):
        return self.cols
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
29.03.2020, 18:11
zaharmochalov, а где еще 4 метода из условия?
0
11 / 11 / 1
Регистрация: 16.01.2020
Сообщений: 19
29.03.2020, 18:39
Ну не зря же я писал) Пусть будет немного другое решение
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.03.2020, 18:47
Цитата Сообщение от Prug4l Посмотреть сообщение
Моё решение проходит все тесты
Твое решение выложенное в таком виде не пройдет первого же теста.
Тебя код заворачивать в теги не учили? Код Python без отступов - не код.
0
11 / 11 / 1
Регистрация: 16.01.2020
Сообщений: 19
30.03.2020, 14:48
не учили;(
0
3 / 3 / 0
Регистрация: 07.03.2021
Сообщений: 47
02.04.2021, 13:22
Prug4l, можешь пожалуста переслать код, только с отступами?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2021, 13:22
Помогаю со студенческими работами здесь

Таблица с изменяемым размером
Реализовать класс Table, который хранит целые числа в двумерной таблице. При инициализации Table(rows, cols) экземпляру передаются число...

Таблица с изменяемым размером
Помогите, пожалуйста с задачей. Реализуйте класс Table, который хранит целые числа в двумерной таблице. При инициализации Table(rows,...

Таблица с изменяемым размером
единицу. Новая строка состоит из нулей. table.add_col(col) — добавить в таблицу новую колонку с индексом col. Номера колонок &gt;=...

Курсор с изменяемым размером
как мне сделать курсор с изменяемым размером? просто я смотрю стандартный класс Cursor не позволяет менять размер и у него нет конструктора...

Матрица с изменяемым размером
Необходимо сделать заполнение графа через матрицу смежности, при чем количество вершин графа выбирает пользователь. Первая строка и столбец...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru