• Cмысл декоратора property?

    @abcd0x00
    >>> class Person:
    ...     first_name = 'First'
    ...     last_name = 'Last'
    ...     
    ...     @property
    ...     def full_name_1(self):
    ...         return ' '.join([self.first_name, self.last_name])
    ...     
    ...     def full_name_2(self):
    ...         return ' '.join([self.first_name, self.last_name])
    ... 
    >>> p = Person()
    >>> p.full_name_1
    'First Last'
    >>> p.full_name_2()
    'First Last'
    >>> p.full_name_2
    <bound method Person.full_name_2 of <__main__.Person object at 0xb739a5ec>>
    >>>
    Ответ написан
    1 комментарий
  • Как из списка с числами сделать список со строками?

    @abcd0x00
    >>> lst = [1, 2, 3, 4, 5]
    >>> out = list(map(str, lst))
    >>> out
    ['1', '2', '3', '4', '5']
    >>>
    Ответ написан
    Комментировать
  • Кто может посоветовать литературу по синтаксическим деревьям?

    @abcd0x00
    Понадобятся ли мне для решения синтаксические деревья? Если да, какую литературу посоветуете?

    Есть классическая книжка Ахо, Ульман "Теория синтаксического анализа, перевода и компиляции".

    Фактически тебе нужен транслятор с одного языка на другой. Из книжки не научишься, но для развития нужно знать теорию, тем более, если нужно такое делать. Методом угадайки там не получится написать, так как это имеет многоступенчатую структуру, где всё надо делать по порядку.
    Ответ написан
    1 комментарий
  • Как осмыслить решение задач на основе общения функций?

    @abcd0x00
    Сначала полное словесное описание.
    Потом блок-схема по словесному описанию.
    Потом псевдокод по блок-схеме.
    Потом код по псевдокоду.

    Все этапы делаешь на бумаге или чём там, пока они не станут выполняться в воображении. То есть, если пишешь псевдокод, то в голове уже должна быть ясная блок-схема. Если рисуешь блок-схему, то в голове должно быть полное словесное описание алгоритма. Если же пишешь код сразу, то в голове должно быть всё.

    А сейчас твой псевдокод ничего из себя не представляет, поэтому и код по нему получается никакой.
    Ответ написан
    Комментировать
  • Почему вложенный цикл теряет доступ к открытому файлу со второй итерации основного цикла?

    @abcd0x00
    Используй b.seek(0) после каждого цикла по b. И не забудь закрыть файлы после работы с ними - хороший стиль. Либо используй with изначально.
    Ответ написан
    Комментировать
  • Какой оптимальный алгоритм подсчета количества файлов?

    @abcd0x00
    Основная проблема в том, что в os.walk нельзя указать глубину поиска, есть ли решения этой проблемы?

    Рекурсивная функция с os.listdir() , os.path.isdir() и параметром глубины.
    Ответ написан
    Комментировать
  • Можно ли писать на чистом Си под Qt? Или для этого нужно именно Си++?

    @abcd0x00
    Из C++ там нужно не много - классы и пространства имён. Всё остальное делается там средствами самого Qt. Так что какого-то глубокого знания C++, которое используется в других cpp-шных программах, там не требуется. Можешь писать по-сишному, просто привязывая код к окнам через cpp-шные средства.
    Ответ написан
    Комментировать
  • Есть ли краткая брошюрка по pep8?

    @abcd0x00
    Если в лине, поставь пакет python3-pep8. Потом просто запускаешь её для скрипта и она всё проверяет.
    (Также можешь поставить python3-pylint.)
    Ответ написан
    Комментировать
  • Как кратко записать конструкцию?

    @abcd0x00
    >>> all_words = ['word1', 'word5', 'word7']
    >>> 
    >>> if {'word1', 'word2', 'word3'}.intersection(all_words):
    ...     print('yes')
    ... else:
    ...     print('no')
    ... 
    yes
    >>>
    Ответ написан
    Комментировать
  • Объясните регулярное выражение?

    @abcd0x00
    Прочитай документацию
    https://docs.python.org/3/library/re.html
    Ответ написан
    Комментировать
  • Изменяются данные в массиве без ведома?

    @abcd0x00
    В чём может быть дело ?

    Неясен источник возникновения A и B. Такие симптомы говорят о мусоре в начальных данных.
    Ответ написан
    Комментировать
  • Как применять перечисляемый тип enum?

    @abcd0x00
    Для начала тебе надо выкинуть тот материал, в котором ты прочитал вот это:
    void main(void) {

    Когда найдёшь материал, где написано:
    int main(void) {
    тогда и узнаешь, что такое enum и так далее.

    Просто если ты учишься по хреновым материалам, то ты и не можешь ничего узнать, потому что автор материалов сам ничего не знает.

    Есть хорошая книга, главная в C мире
    https://en.wikipedia.org/wiki/The_C_Programming_La...
    250 страниц, в которых ты найдёшь всё, что надо.
    Ответ написан
    2 комментария
  • Как применить динамическую память для хранения соразмерного количества символов с ввода?

    @abcd0x00
    Я так понял что инициализацию динамического массива надо делать внутри цикла и освобождать память здесь же.

    Нужно сначала выделить буфер, а потом войти в цикл и писать в него посимвольно. Если он переполняется, то, не выходя из цикла, нужно его увеличить (выделить новый, скопировать данные, освободить старый, поставить новый на место старого).
    Ответ написан
    7 комментариев
  • Как умножить каждый элемент массива с шагом n?

    @abcd0x00
    >>> def gen():
    ...     a, b = 2 ** 0.5, 2
    ...     while True:
    ...         yield a
    ...         yield b
    ...         a *= 2
    ...         b *= 2
    ... 
    >>> lst = [1] * 10
    >>> out = [i * j for i, j in zip(lst, gen())]
    >>> out
    [1.4142135623730951, 2, 2.8284271247461903, 4, 5.656854249492381, 8, 11.313708498984761, 16, 22.627416997969522, 32]
    >>>
    Ответ написан
    Комментировать
  • Как вырезать текст между двумя тэгами в xml?

    @abcd0x00
    Сначала готовишь текст, чтобы было поудобнее, потом обрабатываешь. Из-за этого два раз sed вызывается.
    text="\
    a
    b
    c
    x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
      Туалетная вода-спрей
      &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
      &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
     &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
      Туалетная вода-спрей
      &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
      &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
     &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    d
    e
    f
    "
    
    echo -n "$text"
    
    echo -n "$text" | sed 's%<description>%&x|||%g; s%</description>%|||x&%g' \
                    | sed '/x|||/ { :join N; /|||x/! b join ; s/x|||.*|||x// }'

    Вывод
    [guest@localhost ~]$ text="\
    > a
    > b
    > c
    > x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
    >   Туалетная вода-спрей
    >   &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
    >   &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
    >  &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    > x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
    >   Туалетная вода-спрей
    >   &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
    >   &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
    >  &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    > d
    > e
    > f
    > "
    [guest@localhost ~]$ 
    [guest@localhost ~]$ echo -n "$text"
    a
    b
    c
    x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
      Туалетная вода-спрей
      &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
      &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
     &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
      Туалетная вода-спрей
      &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
      &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
     &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    d
    e
    f
    [guest@localhost ~]$ 
    [guest@localhost ~]$ echo -n "$text" | sed 's%<description>%&x|||%g; s%</description>%|||x&%g' \
    >                 | sed '/x|||/ { :join N; /|||x/! b join ; s/x|||.*|||x// }'
    a
    b
    c
    x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description></description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description></description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    d
    e
    f
    [guest@localhost ~]$

    Ответ написан
    Комментировать
  • В чем суть maillist'ов и по какому принципу они работают?

    @abcd0x00
    В чем суть? Это же довольно нечитаемо получается.

    Ты просто пропустил целую эпоху. Раньше вместо форумов (форумов не было вообще) были такие почтовые места. Они были двух типов: просто списки рассылки и списки рассылки-эхи. Просто список рассылки - это когда ты подписался на адрес и тебе приходят какие-то новости, например, и ты их просто читаешь и больше ничего не происходит. А списки рассылки-эхи (или просто эхи), это когда толпа подписывается на него и общается друг с другом через этот адрес.

    Суть сводилась к следующему: ты подписываешься на почтовый адрес и становишься участником почтовой рассылки. Потом ты посылаешь письмо на определённый адрес и оно копируется и рассылается всем участникам рассылки. Допустим, если их 1000 человек, то они все получают твоё письмо. И потом они начинают тебе отвечать точно так же, посылая ответ на этот широковещательный адрес. Ты просто принимаешь почту с этого адреса и она у тебя складывается в треды. Дальше ты эти треды разворачиваешь и читаешь - что ты спрашивал и что тебе наотвечали там и что они между собой там наотвечали ещё. А тред (или цепочка) - это один спросил что-то, ему кто-то на это ответил, а потом на этот ответ ответил ещё кто-то, а потом на его ответ ответил ещё кто-то. В каждом письме сохраняется специальный заголовок "ответ тому-то". Так почтовая программа определяет, из каких писем образуется тред. И в результате у тебя в почтовой программе в папке этого списка рассылки лежат треды, где каждый тред - это такой разговор между кем-то и кем-то (может быть два человека, может быть три человека, а может и десять).

    Так что вот эти рассылки - это такой привет из прошлого. Сейчас мы с тобой общаемся через web-приложение, а раньше их не было, все общались через почту. Поэтому сегодня вся движуха идёт в вебе, а из почты все ушли. А ещё раньше, до почты, были группы новостей.
    Ответ написан
    1 комментарий
  • Распознавание кода, конечный автомат, лексический анализатор и прочие умные слова?

    @abcd0x00
    На форумах мне рассказали про конечный автомат, и я все равно не понял как он может работать с конкретно этой задачей.

    Если не знаешь, что такое конечный автомат (никогда не делал), то задачу эту не решишь (только с ошибками если). Конечный автомат не даёт, к примеру, выделить ключевое слово, которое находится внутри комментария, потому что он понимает, где место снаружи комментария, а где место внутри комментария. Поэтому в таких случаях и регулярные выражения не помогут (как многие, бывает, думают).
    Ответ написан
    Комментировать
  • Почему я не могу просто откатится в определенному коммиту в git?

    @abcd0x00
    Решил первый раз вернуться к определенному месту и тут такое. Почему так все усложнено?

    Когда ты перешёл через checkout на коммит, то это просто текущий указатель (HEAD) переставился на тот коммит, но вся история-то осталась той же самой. Дальше ты его переставишь куда-нибудь - и он точно так же переставится туда. А как ты запомнишь, где он был до перестановки? Он не запоминает. Поэтому он тебя предупреждает, что сделай ветку, а то при какой-нибудь перестановке потеряешь это место.
    Ответ написан
  • Pure C. Где исходные коды стандартной библиотеки Си?

    @abcd0x00
    Неужели СТАНДАРТНАЯ БИБЛИОТЕКА (которая почти часть языка) это какой-то секрет?

    Стандартная библиотека функций одна. Она описана в стандарте (документе). А все компиляторы - это реализации того, что там описано. Они могут быть написаны по-разному даже в пределах одной системы. Главное, что все функции должны работать одинаково, где бы они ни были (для этого стандарт и существует).
    Ответ написан
    Комментировать