Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 7, 2021 11:54:03

semenova.vv
Зарегистрирован: 2021-06-07
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите с задачей. строки

Дана строка, являющаяся параграфом в тексте. Текст необходимо отформатировать так, чтобы длина каждой строки не превосходила числа m, слова при этом не разрывать. Нельзя использовать списки!

Офлайн

#2 Июнь 8, 2021 07:06:58

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

помогите с задачей. строки

блин вроде должно работать

 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_)
но почемут то не коректно делит



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#3 Июнь 8, 2021 20:09:49

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

помогите с задачей. строки

тут вопрос а пробелы как считать? нужно ли сьедать пробелы в новой строке, и если нужно то сколько? один или все?

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)

Офлайн

#4 Июнь 9, 2021 07:31:49

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

помогите с задачей. строки

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, 
как минимум, чтобы случайно 
не выстрелить себе в ногу.



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 11, 2021 19:24:38)

Офлайн

#5 Июнь 9, 2021 08:16:47

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

помогите с задачей. строки

Во первых задача некорректно поставлена. Что делать если слово длиннее 39 символов?
Надо дополнить условие.

Когда мне задавали подобные задачи в институте я выдавал решение типа:

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

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

Ученик может пользоваться чем угодно. Таие условия говорят что препод не может нормально задачу придумать.



Отредактировано doza_and (Июнь 9, 2021 08:17:56)

Офлайн

#6 Июнь 9, 2021 10:35:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

помогите с задачей. строки

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

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

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



Офлайн

#7 Июнь 9, 2021 11:39:16

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

помогите с задачей. строки

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

Ну вобщем вот такие ограничения я вопсринимаю как ограничения в спорте. Ну нельзя, вот правила такие.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 9, 2021 11:43:29)

Офлайн

#8 Июнь 9, 2021 17:35:57

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

помогите с задачей. строки

doza_and ох надо когда то мне уделить время для регулярок



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 9, 2021 17:36:22)

Офлайн

#9 Июнь 9, 2021 19:39:29

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

помогите с задачей. строки

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

Я в учебных задачах всегда придерживаюсь позиции, что студенты могут пользоваться вообще всем что знают и до чего могут дотянуться. Учебники, шпоры, задачи решенные студентами годом ранее и т.п.. Всем кроме мозга других студентов. Все равно очень легко придумать реалистичные задачи, в решении которых им ничего кроме их головы не поможет. Практика таких задачек предоставляет неограниченное количество.



Офлайн

#10 Июнь 9, 2021 23:03:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

помогите с задачей. строки

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



Отредактировано py.user.next (Июнь 9, 2021 23:06:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version