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

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

21.03.2019, 22:17. Показов 47186. Ответов 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
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
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
2 / 2 / 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 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru