Задать вопрос
  • Как запускать .py в директории Х определенной версией Python?

    @abcd0x00
    Все файлы .py одинаковые, менять заголовок не хочется.

    Даже если все файлы одинаковые, не стоит их запускать на разных версиях. Для каждой версии (имеются в виду 2 или 3) должен быть свой вариант. Это относится к глубинным различиям в этих версиях. Выглядеть код может одинаково, а работать совсем по-разному.
    Ответ написан
    Комментировать
  • Правильно ли сделаны пояснения к коду?

    @abcd0x00
    Вот ты не понимаешь, что такое знаковый тип, поэтому пишешь неправильно.

    10000001b - вот это значение может храниться в переменной как знакового (signed char или просто char (иногда где-то может быть беззнаковым), так и беззнакового (unsigned char) типа. Значение хранится одно и то же, а означает разные величины, в зависимости от типа переменной, в которой хранится.

    Но чем отличаются знаковый тип от беззнакового: переменная знакового типа может переполниться и при переполнении может давать неопределённые результаты; а переменная беззнакового типа не может переполниться, там определённо всё лишнее отсекается (поэтому битовые операции проводят на беззнаковых переменных).

    Так что число отрицательное не потому, что у него там бит знака равен единице, а потому что тот бит вообще считается битом знака, так как число хранится в переменной знакового типа.
    Ответ написан
    Комментировать
  • Bash скрипт поиска русских слов?

    @abcd0x00
    Вообще, делают функцию _() и все фразы пишут на английском типа _("hello"). А сама эта функция уже идёт куда надо и берёт фразу на правильном языке в соответствии с локалью. Таким образом программа переводится на любой язык путём редактирования таких файлов с парами (английская, китайская).
    Ответ написан
  • Как найти и заменить второе вхождение?

    @abcd0x00
    text="\
    abc
    hello: \"\"
    def
    hello: \"\"
    ghi
    hello: \"\"
    jkl
    hello: \"\"
    mno\
    "
    
    echo "$text"
    
    echo "$text" | sed '
      /hello: ""/ {
        x
        /^\.$/ {
          x
          s/""/"world"/
          x
        }
        s/^/./
        x
      }
    '


    Вывод
    [guest@localhost sh]$ text="\
    > abc
    > hello: \"\"
    > def
    > hello: \"\"
    > ghi
    > hello: \"\"
    > jkl
    > hello: \"\"
    > mno\
    > "
    [guest@localhost sh]$ 
    [guest@localhost sh]$ echo "$text"
    abc
    hello: ""
    def
    hello: ""
    ghi
    hello: ""
    jkl
    hello: ""
    mno
    [guest@localhost sh]$ 
    [guest@localhost sh]$ echo "$text" | sed '
    >   /hello: ""/ {
    >     x
    >     /^\.$/ {
    >       x
    >       s/""/"world"/
    >       x
    >     }
    >     s/^/./
    >     x
    >   }
    > '
    abc
    hello: ""
    def
    hello: "world"
    ghi
    hello: ""
    jkl
    hello: ""
    mno
    [guest@localhost sh]$

    Ответ написан
    5 комментариев
  • Как из строки вывести слова в массив?

    @abcd0x00
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int main()
    {
        char line[] = "  abc  def, ghi  ";
        char *arr[3];
        char *p;
    
        p = line;
        for (int i = 0; i < 3; i++) {
            p = strtok(p, " ,");
            if (p) {
                arr[i] = p;
                p = NULL;
            } else {
                break;
            }
        }
    
        for (int i = 0; i < 3; i++) {
            cout << arr[i] << endl;
        }
    
        return 0;
    }


    Вывод
    [guest@localhost cpp]$ .iso++ t.cpp -o t
    [guest@localhost cpp]$ ./t
    abc
    def
    ghi
    [guest@localhost cpp]$
    Ответ написан
    Комментировать
  • Где ошибка в алгоритме разложения cosx в ряд?

    @abcd0x00
    Ты неправильно решаешь
    https://toster.ru/answer?answer_id=927676

    Не надо хранить факториал, он вообще не используется в решении, это ловушка для тупых.
    Ответ написан
    Комментировать
  • Почему при обходе словаря в Python я получаю кортеж?

    @abcd0x00
    >>> dicts = {'0000000876': {'FullName': 'Сисин Алексей Александрович',
    ...                         'Department': 'Фармацевтический склад'},
    ...          '0000000152': {'FullName': 'Возягин Павел Константинович',
    ...                         'Department': 'Инженерный отдел'},
    ...          '0000000103': {'FullName': 'Зайцев Александр Александрович',
    ...                         'Department': 'Коммерческая дирекция'},
    ...          '0000001015': {'FullName': 'Кочетов Николай Васильевич',
    ...                         'Department': 'Транспортно-хозяйственный отдел'}}
    >>> 
    >>> for d in dicts.values():
    ...     print(d['FullName'])
    ... 
    Кочетов Николай Васильевич
    Зайцев Александр Александрович
    Сисин Алексей Александрович
    Возягин Павел Константинович
    >>>
    Ответ написан
    Комментировать
  • Почему кракозябры при выводе строки задом наперед?

    @abcd0x00
    Для русских букв используй широкие символы wchar_t и широкосимвольные функции wcslen() и wprintf().
    Ответ написан
    Комментировать
  • Get item by value?

    @abcd0x00
    >>> lst = [{'n': 0}, {'n': 1}]
    >>> 
    >>> next(filter(lambda i: i['n'] == 1, lst), None)
    {'n': 1}
    >>> next(filter(lambda i: i['n'] == 5, lst), None)
    >>>


    >>> lst = [{'n': 0}, {'n': 1}]
    >>> 
    >>> next((i for i in lst if i['n'] == 1), None)
    {'n': 1}
    >>> next((i for i in lst if i['n'] == 5), None)
    >>>
    Ответ написан
    Комментировать
  • Как перемещаться по коммитам git, чтобы не потерять их?

    @abcd0x00
    Подскажите - у меня есть около 15 коммитов. Где то я допустил ошибку.

    Ошибки обычно отыскиваются через
    git blame -- file.txt
    Там показывается для каждой строки файла соответствующий коммит.
    Ответ написан
    Комментировать
  • В какие игры вы играете на Linux?

    @abcd0x00
    Вообще, много всяких игр 90-х и начала 2000, плюс восьмибитные из детства.

    Battlefield Vietnam
    BroodWar
    C&C Tiberian Sun
    CLSWC2BN # это Warcraft II
    Emperor Battle For Dune
    IGI 2

    85c7f1056dfe44488e948cec5fa4278f.png

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

    @abcd0x00
    От этой формы потом надо наследоваться в своём приложении, чтобы оно приобрело вид этой формы. Саму её запускать не надо. Почитай какие-нибудь туториалы для начала.
    Ответ написан
    Комментировать
  • Ваше отношение к рекурсии?

    @abcd0x00
    При рекурсии создаются копии одних и тех же переменных многократно - жрётся память и время. Как бы там ни было, она имеет и максимальную глубину ещё - то есть при очень длинной обработке программа выпадет, потому что не хватит ресурсов системы для рекурсии. Так что память, время и граница - это то, чего нет в аналогичном цикле.
    Ответ написан
    Комментировать
  • Почему факториал уходит в нуль?

    @abcd0x00
    Эти задачи решаются не через факториал, а через рекуррентные соотношения. Ты просто попал в ловушку для новичков. Они видят, что там факториал и начинают решать через факториал.
    Ответ написан
    Комментировать
  • Как в Python сгенерировать наименование файла определенного формата?

    @abcd0x00
    >>> import string
    >>> import random
    >>> 
    >>> def gen_random_chars(nrandchars):
    ...     alpha = string.ascii_uppercase + string.digits
    ...     chars = ''.join(random.choice(alpha) for _ in range(nrandchars))
    ...     return chars
    ... 
    >>> def gen_name(prefix):
    ...     return prefix + gen_random_chars(4)
    ... 
    >>> for i in range(10):
    ...     gen_name('abcd')
    ... 
    'abcdZ5VK'
    'abcdT8V4'
    'abcdJJCN'
    'abcd92IQ'
    'abcdW0QP'
    'abcdNQLB'
    'abcdQ1WS'
    'abcdF8SG'
    'abcd7WB1'
    'abcdA3X3'
    >>>
    Ответ написан
    Комментировать
  • Какие команды нужно знать питонисту (напишете какие наиболее часто вы используете или какая очень запомнилась)?

    @abcd0x00
    Вот эти две ссылки смотри
    Одна по ядру языка
    https://docs.python.org/3/reference/index.html
    Другая по библиотеке языка
    https://docs.python.org/3/library/index.html
    Есть ещё сторонние модули, у них своя документация обычно.
    Ответ написан
    Комментировать
  • Что за идиома в питоне?

    @abcd0x00
    Списочное включение.

    Есть списочное, словарное, множественное включение и есть генераторное выражение.

    Генераторное выражение
    >>> gen = (i for i in 'abcd')
    >>> gen
    <generator object <genexpr> at 0xb7375374>
    >>> next(gen)
    'a'
    >>> next(gen)
    'b'
    >>> next(gen)
    'c'
    >>> next(gen)
    'd'
    >>> next(gen)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    >>> next(gen)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    >>>


    Вот пример использования генераторного выражения
    >>> list(i for i in 'abc')
    ['a', 'b', 'c']
    >>> list(i, j for i in 'abc')
      File "<stdin>", line 1
    SyntaxError: Generator expression must be parenthesized if not sole argument
    >>>

    Кажется, будто это списочное включение, а на самом деле это генераторное выражение, создающее генератор, который передаётся в конструктор списка.

    Но такую конструкцию часто используют в виде аналога включения опредлённого типа.
    Как бы "кортежное включение"
    >>> tuple(i for i in 'abc')
    ('a', 'b', 'c')
    >>>
    Ответ написан
    Комментировать
  • Господа, пoсоветуйте книги по созданию bash скриптов и по регуляркам?

    @abcd0x00
    Скрипты в Bash
    Это вообще сайт с руководствами
    tldp.org/guides.html
    Это ABSG (Advanced Bash-Scripting Guide)
    tldp.org/LDP/abs/html/index.html
    ABSG тебе уже дали на русском.

    Регулярные выражения
    Тут на питоне
    getpython3.com/diveintopython3/regular-expressions.html
    https://docs.python.org/3/howto/regex.html#regex-howto
    Ещё книжка есть
    "Mastering Regular Expressions" Jeffrey Friedl
    Ответ написан
    Комментировать
  • Как в консоли сделать замену подстрок в Linux?

    @abcd0x00
    func()
    {
        cat <<EOF
    int i;
       cout << "hello!" << endl;
       printf("%s", "hello");
       printf("%s", "world");
    EOF
    }
    
    func
    
    func | sed '/hello/ s%^%//%'


    [guest@localhost sh]$ func()
    > {
    >     cat <<EOF
    > int i;
    >    cout << "hello!" << endl;
    >    printf("%s", "hello");
    >    printf("%s", "world");
    > EOF
    > }
    [guest@localhost sh]$ 
    [guest@localhost sh]$ func
    int i;
       cout << "hello!" << endl;
       printf("%s", "hello");
       printf("%s", "world");
    [guest@localhost sh]$ 
    [guest@localhost sh]$ func | sed '/hello/ s%^%//%'
    int i;
    //   cout << "hello!" << endl;
    //   printf("%s", "hello");
       printf("%s", "world");
    [guest@localhost sh]$
    Ответ написан
    Комментировать
  • Как работать с Git на нескольких компьютерах над одним коммитом?

    @abcd0x00
    И после работы хотелось бы закончить работу над фичей/фиксом.

    Это ужасно, конечно, что ты работу делаешь в нерабочее время. Так можно стать трудоголиком (жизнь = работа) и получить выгорание (депрессию).

    Если ты хочешь доделывать работу периодически, у тебя на диске (на флешке, например) должен быть склонированный проект. Его можно подключить к основному проекту как удалённый источник под каким-нибудь именем. Получится, будто он у тебя как бы на github'е, но он будет на флешке и ты сможешь туда заталкивать и оттуда скачивать, как с обычного удалённого репозитория.

    А чтобы перекинуть незакомиченные изменения, используй diff-файл: делаешь git diff, но вывод направляешь в файл и потом этот файл можешь перекинуть в другой репозиторий, а потом сделать git apply с ним в другом репозитории и эти изменения появятся там тоже в незакомиченном виде.

    И то, что ты пишешь, что у тебя один большой коммит, - так не должно быть. Должна быть ветка для какой-то фичи, в неё делается много маленьких коммитов, а потом эта ветка вливается без быстрого прохода (это когда коммит слияния делается в любом случае). И вот в этом коммите слияния пишется вся информация о фиче.

    А сами коммиты в такой ветке друг от друга не должны зависеть (не всегда это возможно, конечно), чтобы при отмене одного изменения не нужно было отменять остальные.
    Ответ написан
    4 комментария