Форум сайта python.su
Дана строка, являющаяся параграфом в тексте. Текст необходимо отформатировать так, чтобы длина каждой строки не превосходила числа m, слова при этом не разрывать. Нельзя использовать списки!
Офлайн
блин вроде должно работать
txt = "Возьмём для примера существительные “слово” и “имя”. Если"\ " подвести короткий итог, то анонимные функции без static"\ " стоит использовать если вам необходимо привязать объект к "\ "области видимости выполнения функции. Во всех остальных "\ "случаях можно и нужно использовать static, как минимум, "\ "чтобы случайно не выстрелить себе в ногу." out_ = "" num = 30 mem = "" buf = "" for i in txt: buf += i if i == " " : if len(mem) + len(buf) > num: mem += "\n" out_ += mem mem = "" buf = "" else: mem += buf buf = "" else: if len(mem) + len(buf) > num: mem += "\n" out_ += mem mem = "" buf = "" else: mem += buf buf = "" print(out_)
Офлайн
тут вопрос а пробелы как считать? нужно ли сьедать пробелы в новой строке, и если нужно то сколько? один или все?
AD0DE412както сложно у вас все…
блин вроде должно работать
но почемут то не коректно делит
txt = "Возьмём для примера существительные “слово” и “имя”. Если "\ "подвести короткий итог, то анонимные функции без static"\ " стоит использовать если вам необходимо привязать объект к"\ " области видимости выполнения функции. Во всех остальных "\ "случаях можно и нужно использовать static, как минимум, "\ "чтобы случайно не выстрелить себе в ногу." str_len = 30 # ширина строки startl_pos = 0 # позиция начала строки prev_pos = 0 # позиця предыдущего пробела for cur_pos, char in enumerate(txt): if char == ' ' or cur_pos == len(txt)-1: if cur_pos - startl_pos == str_len: print(cur_pos-startl_pos, txt[startl_pos:cur_pos]) startl_pos = cur_pos prev_pos = cur_pos elif cur_pos - startl_pos > str_len: print(prev_pos-startl_pos, txt[startl_pos: prev_pos]) startl_pos = prev_pos else: prev_pos = cur_pos else: pass if startl_pos != cur_pos+1: print(cur_pos-startl_pos, txt[startl_pos: cur_pos+1]) >>> 19 Возьмём для примера 26 существительные “слово” и 30 “имя”. Если подвести короткий 27 итог, то анонимные функции 30 без static стоит использовать 30 если вам необходимо привязать 27 объект к области видимости 28 выполнения функции. Во всех 26 остальных случаях можно и 27 нужно использовать static, 28 как минимум, чтобы случайно 26 не выстрелить себе в ногу. >>>
[code python][/code]
Отредактировано PEHDOM (Июнь 8, 2021 20:11:16)
Офлайн
PEHDOM спасибо
уже решено
не нужно обнулять buf в if (куда мои глаза смотрели в выводе же слово седается)
txt = "Возьмём для примера существительные “слово” и “имя”. Если"\ " подвести короткий итог, то анонимные функции без static"\ " стоит использовать если вам необходимо привязать объект к "\ "области видимости выполнения функции. Во всех остальных "\ "случаях можно и нужно использовать static, как минимум, "\ "чтобы случайно не выстрелить себе в ногу." out_ = "" num = 30 mem = "" buf = "" for i in txt: buf += i if i == " " : if len(mem) + len(buf) > num: mem += "\n" out_ += mem mem = "" else: mem += buf buf = "" else: if len(mem) + len(buf) > num: mem += "\n" out_ += mem mem = "" else: mem += buf out_ += mem
Возьмём для примера существительные “слово” и “имя”. Если подвести короткий итог, то анонимные функции без static стоит использовать если вам необходимо привязать объект к области видимости выполнения функции. Во всех остальных случаях можно и нужно использовать static, как минимум, чтобы случайно не выстрелить себе в ногу.
Отредактировано AD0DE412 (Июнь 11, 2021 19:24:38)
Офлайн
Во первых задача некорректно поставлена. Что делать если слово длиннее 39 символов?
Надо дополнить условие.
Когда мне задавали подобные задачи в институте я выдавал решение типа:
re.sub(" +","\n",text)
re.sub("(.{1,30}) ",r"\1\n",text)
Отредактировано doza_and (Июнь 9, 2021 08:17:56)
Офлайн
doza_andКогда злят задачи - это хороший признак того, что у тебя пробел. Ну, и когда не хочется делать задачу, потому что она такая вся скучная, - это тоже обычно означает, что она не так просто решается, как хотелось бы. Хотелось бы легко и просто, а получается полный трэш: сначала тратишь кучу времени, а потом оказывается, что ты не можешь покрыть все варианты данных - задача не решена до конца. Один из источников прокрастинации. Подсознательно человек чувствует, что что-то не то, а осознать это не может, потому что логически всё вроде верно.
А злобный я такой потому что не люблю условий типа “решить без …”
Ученик может пользоваться чем угодно. Таие условия говорят что препод не может нормально задачу придумать.
semenova.vvА со списками может любой дурак сделать. А в реале тебе попадутся задачи даже самые простейшие, на которых дураки сразу отваливаются. Поработай с какими-нибудь данными, где до запятой и после запятой тысячи знаков. Вот тебе астрономы или биологи пришлют какие-то реальные данные на обработку, а там ничего нельзя потерять в точности, округлить и прочее. И ты будешь сидеть и думать “а как же я эти числа буду обрабатывать, если я их даже сохранить не могу?”. Ну, значит, тебе эта задача не по силам. А решаема она? А она решаема. Просто не тобой. Потому что твой уровень - решать только простенькое что-то.
Дана строка, являющаяся параграфом в тексте. Текст необходимо отформатировать так, чтобы длина каждой строки не превосходила числа m, слова при этом не разрывать. Нельзя использовать списки!
Офлайн
doza_andВ любом виде спорта куча условий типа “сделать без…..” Бокс , например. Это почему ногами бить нельзя? и ниже пояса? и захваты делать? и броски? и подсечки тоже недльзя? И с дружбанами на ринг выйти тоже нельзя? В реальной драке вас будут 3.14здить и руками и ногами и доской-сороковкой, и пятеро на одного. Футбол. Как руками нельзя? и подножки ставить? и толкаться? и одному голкипера держать пока другой забивает? Стрельба. Почему нельзя подойти и в упор всадит пулю в мишень?Бег. Почему я не могу воспользоваться велосипедам или в крайнем случае роликами? …..
А злобный я такой потому что не люблю условий типа “решить без …”
Ученик может пользоваться чем угодно. Такие условия говорят что препод не может нормально задачу придумать.
[code python][/code]
Отредактировано PEHDOM (Июнь 9, 2021 11:43:29)
Офлайн
doza_and ох надо когда то мне уделить время для регулярок
Отредактировано AD0DE412 (Июнь 9, 2021 17:36:22)
Офлайн
PEHDOMТут немного другое. В спорте все в равных условиях. А тут преподаватель задачу придумал, а студенты должны решать и не вякать. Я считаю что все равны. Если студент увидел ошибку в постановке задачи преподавателем, то он должен сделать замечание преподавателю. А преподаватель исправить условия. В данном случае мне кажется от задачи сильно попахивает самодовольством и ленью того кто задачу придумывал.
В любом виде спорта куча условий типа “сделать без…..”
Офлайн
doza_andА с чего ты взял, что он учит их на питоне писать? Когда они выпустятся, Python к тому времени уже сдохнет сто раз. Дело даже не в этом. Он не учит питонистов; он на питоне учит программистов вообще на всех языках, разделяя их по парадигмам. Он на первом курсе может их учить в процедурной парадигме, на втором - в структурной, на третьем - в объектно-ориентированной. При этом это всё на питоне будет происходить, просто задачи будут меняться. На питоне просто удобно учить. Он на питоне учит их вообще ассемблерным каким-то фишкам, например, а там списков нет. И вот прикинь, этому мальчику попадается какой-нибудь робот-пылесос прямо у него дома, прямо ему и будет нужно его перепрограммировать нормально, под себя, а в этом роботе не питон, а вообще какой-то зауженный диалект чего-нибудь. И этот мальчик начинает там искать списки, а их там нет. И всё, и мальчик садится на жопу, потому что в институте что-то там думал и считал. И таких мальчиков вагон и маленкая тележка. Дальше он вызывает дяденьку, который может, и платит ему из своего кармана. Дяденька заработал, а мальчик потратился. Вот и вся разница. Мальчик проучился впустую.
Они должны в какойто степени имитировать релаьные задачи. Если у вас встречалась задача когда в питоне нельзя использовать списки, так вы эту задачу и давайте.
Отредактировано py.user.next (Июнь 9, 2021 23:06:06)
Офлайн