Different number of lines: out = 0, corr = 10

slam

Новичок
Пользователь
Мар 19, 2022
5
0
1
Программа принимает на вход высоту, ширину (--frame-height, --frame-width) блока в символах и имя файла, а на выходе выводит содержимое (начальную часть) файла которое помещается в указанные размеры.
Если строка не умещается по длине, то ее нужно перенести.

Вся логика форматирования должна быть реализована в функции format_text_block(frame_height, frame_width, file_name), которая возвращает отформатированный текст и в дальнейшем может быть использована в других скриптах.

В случае возникновения ошибок при работе с файлом необходимо вернуть текст исключения, которое выбрасывается в этой ситуации.
мой код :

import argparse


def format_text_block(height, width, text):
try:
s = open(text).readlines()
z, out = [], []

for i in s:
if len(i) == 1 and i.find('\n') != -1:
z.append(i)
else:
z.append(i.replace('\n', ''))
for line in ''.join(z).split('\n'):
for i in range(0, len(line), width):
out.append(line[i:i + width])
else:
out.append('')
return '\n'.join(out[:height])
except Exception as e:
return e


if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--frame-height', type=int)
parser.add_argument('--frame-width', type=int)
parser.add_argument('filename', type=str)
args = parser.parse_args()
print(format_text_block(args.frame_height, args.frame_width, args.filename))

Ожидаемый результат​

Chapter I: An Unexpected Party




In a hole in the ground there
lived a hobbit. Not a nasty, d
irty, wet hole, filled with th
e ends of worms and an oozy sm
ell, nor yet a dry, bare, sand

Вывод​



ошибка в названии
 

slam

Новичок
Пользователь
Мар 19, 2022
5
0
1
Python:
import argparse


def format_text_block(height, width, text):
try:
s = open(text).readlines()
z, out = [], []

for i in s:
if len(i) == 1 and i.find('\n') != -1:
z.append(i)
else:
z.append(i.replace('\n', ''))
for line in ''.join(z).split('\n'):
for i in range(0, len(line), width):
out.append(line[i:i + width])
else:
out.append('')
return '\n'.join(out[:height])
except Exception as e:
return e


if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--frame-height', type=int)
parser.add_argument('--frame-width', type=int)
parser.add_argument('filename', type=str)
args = parser.parse_args()
print(format_text_block(args.frame_height, args.frame_width, args.filename))
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Python:
import argparse


def format_text_block(height, width, text):
try:
s = open(text).readlines()
z, out = [], []

for i in s:
if len(i) == 1 and i.find('\n') != -1:
z.append(i)
else:
z.append(i.replace('\n', ''))
for line in ''.join(z).split('\n'):
for i in range(0, len(line), width):
out.append(line[i:i + width])
else:
out.append('')
return '\n'.join(out[:height])
except Exception as e:
return e


if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--frame-height', type=int)
parser.add_argument('--frame-width', type=int)
parser.add_argument('filename', type=str)
args = parser.parse_args()
print(format_text_block(args.frame_height, args.frame_width, args.filename))
у тебя отступов вообще нет
 

Форум IT Специалистов