Найти - Пользователи
Полная версия: помогите с задачей. строки
Начало » Центр помощи » помогите с задачей. строки
1 2
semenova.vv
Дана строка, являющаяся параграфом в тексте. Текст необходимо отформатировать так, чтобы длина каждой строки не превосходила числа m, слова при этом не разрывать. Нельзя использовать списки!
AD0DE412
блин вроде должно работать
 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_)
но почемут то не коректно делит
PEHDOM
тут вопрос а пробелы как считать? нужно ли сьедать пробелы в новой строке, и если нужно то сколько? один или все?
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  не выстрелить себе в ногу.
>>> 
числа в начале это длинна строки.
AD0DE412
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, 
как минимум, чтобы случайно 
не выстрелить себе в ногу.
doza_and
Во первых задача некорректно поставлена. Что делать если слово длиннее 39 символов?
Надо дополнить условие.

Когда мне задавали подобные задачи в институте я выдавал решение типа:
 re.sub(" +","\n",text)
Строки будут из одного слова, что короче 30 символов. Условие задачи дословно выполнено.
Ну и наконец для призывающих к очевидности доп условий
 re.sub("(.{1,30}) ",r"\1\n",text)

А злобный я такой потому что не люблю условий типа “решить без …”

Ученик может пользоваться чем угодно. Таие условия говорят что препод не может нормально задачу придумать.
py.user.next
doza_and
А злобный я такой потому что не люблю условий типа “решить без …”
Ученик может пользоваться чем угодно. Таие условия говорят что препод не может нормально задачу придумать.
Когда злят задачи - это хороший признак того, что у тебя пробел. Ну, и когда не хочется делать задачу, потому что она такая вся скучная, - это тоже обычно означает, что она не так просто решается, как хотелось бы. Хотелось бы легко и просто, а получается полный трэш: сначала тратишь кучу времени, а потом оказывается, что ты не можешь покрыть все варианты данных - задача не решена до конца. Один из источников прокрастинации. Подсознательно человек чувствует, что что-то не то, а осознать это не может, потому что логически всё вроде верно.

Так что простенькие решения заводят тебя в такое состояние “я всё могу решить” - розовые очки. А когда с реальным миром сталкиваешься, то там оказывается всё сложным. Сложно здесь, сложно там, сложно везде. И поэтому у многих нет даже ни одного продукта за десятки лет программирования. Остаются только рассказы, где они там сидели и так далее, как будто это кому-то интересно. Отмазки в стиле “да что же я мог сделать один? разве это возможно?” тоже из той же оперы.

semenova.vv
Дана строка, являющаяся параграфом в тексте. Текст необходимо отформатировать так, чтобы длина каждой строки не превосходила числа m, слова при этом не разрывать. Нельзя использовать списки!
А со списками может любой дурак сделать. А в реале тебе попадутся задачи даже самые простейшие, на которых дураки сразу отваливаются. Поработай с какими-нибудь данными, где до запятой и после запятой тысячи знаков. Вот тебе астрономы или биологи пришлют какие-то реальные данные на обработку, а там ничего нельзя потерять в точности, округлить и прочее. И ты будешь сидеть и думать “а как же я эти числа буду обрабатывать, если я их даже сохранить не могу?”. Ну, значит, тебе эта задача не по силам. А решаема она? А она решаема. Просто не тобой. Потому что твой уровень - решать только простенькое что-то.
Поэтому тебя учат сложные вещи выполнять. А примерчики для дурачков ты легко найдёшь в этих быстрошколах, которые денежки трясут, пока люди не поймут, что их накалывают.
PEHDOM
doza_and
А злобный я такой потому что не люблю условий типа “решить без …”
Ученик может пользоваться чем угодно. Такие условия говорят что препод не может нормально задачу придумать.
В любом виде спорта куча условий типа “сделать без…..” Бокс , например. Это почему ногами бить нельзя? и ниже пояса? и захваты делать? и броски? и подсечки тоже недльзя? И с дружбанами на ринг выйти тоже нельзя? В реальной драке вас будут 3.14здить и руками и ногами и доской-сороковкой, и пятеро на одного. Футбол. Как руками нельзя? и подножки ставить? и толкаться? и одному голкипера держать пока другой забивает? Стрельба. Почему нельзя подойти и в упор всадит пулю в мишень?Бег. Почему я не могу воспользоваться велосипедам или в крайнем случае роликами? …..

Ну вобщем вот такие ограничения я вопсринимаю как ограничения в спорте. Ну нельзя, вот правила такие.
AD0DE412
doza_and ох надо когда то мне уделить время для регулярок
doza_and
PEHDOM
В любом виде спорта куча условий типа “сделать без…..”
Тут немного другое. В спорте все в равных условиях. А тут преподаватель задачу придумал, а студенты должны решать и не вякать. Я считаю что все равны. Если студент увидел ошибку в постановке задачи преподавателем, то он должен сделать замечание преподавателю. А преподаватель исправить условия. В данном случае мне кажется от задачи сильно попахивает самодовольством и ленью того кто задачу придумывал.
У нас же нет олимпийского вида спорта кто с большей высоты прыгнет жопой на ежика. Это потому что нет в жизни такой необходимости. Учебные задачи это как сказки - “Сказка ложь, да в ней намек, добрым молодцам урок”. Они должны в какойто степени имитировать релаьные задачи. Если у вас встречалась задача когда в питоне нельзя использовать списки, так вы эту задачу и давайте. А если вы даже просто придумать такую ситуацию не можете то нечего и ставить такие ограничения.

Я в учебных задачах всегда придерживаюсь позиции, что студенты могут пользоваться вообще всем что знают и до чего могут дотянуться. Учебники, шпоры, задачи решенные студентами годом ранее и т.п.. Всем кроме мозга других студентов. Все равно очень легко придумать реалистичные задачи, в решении которых им ничего кроме их головы не поможет. Практика таких задачек предоставляет неограниченное количество.
py.user.next
doza_and
Они должны в какойто степени имитировать релаьные задачи. Если у вас встречалась задача когда в питоне нельзя использовать списки, так вы эту задачу и давайте.
А с чего ты взял, что он учит их на питоне писать? Когда они выпустятся, Python к тому времени уже сдохнет сто раз. Дело даже не в этом. Он не учит питонистов; он на питоне учит программистов вообще на всех языках, разделяя их по парадигмам. Он на первом курсе может их учить в процедурной парадигме, на втором - в структурной, на третьем - в объектно-ориентированной. При этом это всё на питоне будет происходить, просто задачи будут меняться. На питоне просто удобно учить. Он на питоне учит их вообще ассемблерным каким-то фишкам, например, а там списков нет. И вот прикинь, этому мальчику попадается какой-нибудь робот-пылесос прямо у него дома, прямо ему и будет нужно его перепрограммировать нормально, под себя, а в этом роботе не питон, а вообще какой-то зауженный диалект чего-нибудь. И этот мальчик начинает там искать списки, а их там нет. И всё, и мальчик садится на жопу, потому что в институте что-то там думал и считал. И таких мальчиков вагон и маленкая тележка. Дальше он вызывает дяденьку, который может, и платит ему из своего кармана. Дяденька заработал, а мальчик потратился. Вот и вся разница. Мальчик проучился впустую.
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