Модифицируйте код
Один из простейших форматов таблиц — CSV, что значит Comma-Separated Values, т. е. «значения, разделённые запятыми». В самом деле, в этом текстовом формате каждому ряду таблицы соответствует строка текста, а значения в ячейках одного ряда разделяются запятыми.
Придумайте такую модификацию формата CSV, описанного выше, чтобы значения в ячейках таблицы могли содержать запятые и символы перехода на новую строку.
Напишите программу, которая считывает таблицу в формате CSV, в том числе с запятыми и символами перехода на новую строку в вашем улучшенном формате, а затем выводит отдельные её элементы.
Формат ввода На первой строке указано одно натуральное число R — число рядов таблицы. Далее следуют R строк, представляющие ряды таблицы. Далее следует одно натуральное число N — число элементов таблицы, которые нужно будет вывести. Далее следует N строк, на которых приведены разделённые запятой координаты элементов таблицы (номер строки и номер столбца, нумерация с нуля).
(Запятые в примере расставлены не по правилам пунктуации.)
Запятые и символы перехода на новую строку (а также, возможно, какие-то ещё символы) кодируются предложенным вами способом.
Формат вывода Выводятся N строк — соответствующие значения из таблицы.
Помните, что пользователь должен видеть запятые как запятые и переходы на новую строку как переходы на новую строку.
написал такой код:
table = []
for i in range(int(input())):
row = [el for el in input().split(',')]
table.append(row)
for i in range(int(input())):
a, b = map(int, input().split(","))
print(table[a][b], end='\n')
есть маленькая ошибка при выполнении работы программы: она не считывает запятые и пробелы/табуляции, а разделяет и добавляет по ним в матрицу. И получается если убрать разделение по этим символам,то не будет добавляться в матрицу
Ответы (3 шт):
Я думаю, что ошибка не та, которую вы описали. Проблема в выводе. Вот что видно при запуске вашей программы:
4
Дама,сдавала в багаж
диван, чемодан, саквояж
картину корзину картонку
и маленькую собачонку,,
4
0,0
Дама
1,2
саквояж
3,1
3,0
и маленькую собачонку
От вас, вероятно, хотят это:
4
Дама,сдавала в багаж
диван, чемодан, саквояж
картину корзину картонку
и маленькую собачонку,,
4
0,0
1,2
3,1
3,0
Дама
саквояж
и маленькую собачонку
n = int(input())
table = [input().split(',') for i in range(n)]
for i in range(int(input())) :
a, b = map(int, input().split(","))
if a < n and b < len(table[a]) :
print(table[a][b], end='\n')
continue
print()
модифицировал, что вроде как проблема поставленная в вопросе исправлена
Вот мое решение. Если я правильно понял, что надо. Формально знак & можно заменить на любой спецсимвол. Если препод не шибко придирчивый - то у вас прокатит.
# Правила ввода новая строка - &n, табуляция &t, запятая &c
# например, при вводе Вася&с&n вымой&c пожалуйста&c посуду&t! программа выведет
# Вася,
# Вымой, пожалуйста, посуду !
r = int(input())
tabl = [input().split(",") for _ in range(r)]
for i in range(r):
for j in range(len(tabl[i])):
while "&n" in tabl[i][j] or "&t" in tabl[i][j] or "&c" in tabl[i][j]:
if "&n" in tabl[i][j]:
tabl[i][j] = tabl[i][j][:tabl[i][j].find("&n")] +\
"\n" + tabl[i][j][tabl[i][j].find("&n") + 2:]
if "&t" in tabl[i][j]:
tabl[i][j] = tabl[i][j][:tabl[i][j].find("&t")] +\
"\t" + tabl[i][j][tabl[i][j].find("&t") + 2:]
if "&c" in tabl[i][j]:
tabl[i][j] = tabl[i][j][:tabl[i][j].find("&c")] +\
"," + tabl[i][j][tabl[i][j].find("&c") + 2:]
n = int(input())
x = 0
y = 0
for i in range(n):
x, y = [int(i) for i in input().split(",")]
print(tabl[x][y])
