Найти - Пользователи
Полная версия: Как «корректно» обрабатывать концы строк?
Начало » Центр помощи » Как «корректно» обрабатывать концы строк?
1
Edward
Есть одна интересная задача:
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 Мбайт
Работа со строками. Дана последовательность из N строк произвольной длины. Необходимо для каждой строки определить ее последний символ.
Формат входных данных:
В первой строке содержится число N(1 <= N <= 100).
В следующих N строках содержатся произвольные последовательности символов.
Формат выходных данных:
N строк, в каждой из которых содержится последний символ соответствующей строки в исходном файле.
Пример входных и выходных данных:
task2.in
5
adeetd
awt6
shekueywul*
jkueyeskuy
atgs
task2.out
d
6
*
y
s
Примечание: входной файл - task2.in ; выходной - task2.out
Посмотрел, увидел, думаю: Проще некуда. Код моего решения снизу.
В текстовых файлах решение работает отлично.
Правда, есть одна важная особенность - система, тестирующая ответы, называется Yandex Contest.
Копирую код, кликаю “отправить”, а мне приходит сообщение об ошибке при прохождении первого же теста (того, что сверху) - неверный ответ.
Я все думал, думал и думал … Прочитал в инструкции:
Если ваша программа читает файл по одному байту и явно обрабатывает формат переноса строк Windows, т. е. строки заканчиваются двумя байтами 13 10 (\r\n), то некорректная обработка концов строк может привести к получению вердикта WA или PE.
 with open('task1.in', 'r') as f_o:
  lines = f_o.readlines()
  del lines[0]
with open('task1.out', 'a') as f_o:
  for line in lines:
    if line == lines[-1]:
      f_o.write(line[-1])
    else:
      f_o.write(line[-2] + '\n')
marvellik
а так ?
 with open('task1.in') as f,open('task2.out','w') as out:
    res = list(map(str.strip,f.readlines()))  
    for i in range(int(res.pop(0))):
        out.write(res[i][-1]+'\n')
Edward
Неверно.
task.in:
5
fwfw**
scwj-
dwqfw/
ds)
(
()
adgs
task.out:
*
-
/
)
(
Последние два символа не пишет.
marvellik
Edward
Дана последовательность из N строк произвольной длины. Необходимо для каждой строки определить ее последний символ.
Формат входных данных:
В первой строке содержится число N(1 <= N <= 100).
В следующих N строках содержатся произвольные последовательности символов.
ну тут явно не 5 строк а 7 поэтому и две последние не пишет
5
fwfw**
scwj-
dwqfw/
ds)
(
()
adgs
Edward
Прошу прощения, не заметил. А так работает)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB