• Сколько будет неповторяющихся комбинации из цифр 1,2,3,4,5,6,7,8 по четыре цифры в комбинации?

    aRegius
    @aRegius
    Python Enthusiast
    >>> import itertools
    >>> four_numbers_combinations = list(itertools.permutations(eight_numbers_list, 4))
    >>> len(four_numbers_combinations)
    1680
    >>> four_numbers_combinations[:10]
    [(1, 2, 3, 4), (1, 2, 3, 5), (1, 2, 3, 6), (1, 2, 3, 7), (1, 2, 3, 8), (1, 2, 4, 3), (1, 2, 4, 5), (1, 2, 4, 6), (1, 2, 4, 7), (1, 2, 4, 8)]
    Ответ написан
    Комментировать
  • Как работает PIL.Image.PERSPECTIVE?

    @o5a
    Нет, там указываются не координаты, а коэффициенты уравнения (a x + b y + c)/(g x + h y + 1), (d x + e y + f)/(g x + h y + 1), высчитывает координаты, откуда взять значение для каждого пикселя (x, y).
    Из документации пакета:
    Data is a 8-tuple (a, b, c, d, e, f, g, h) which contains the coefficients for a perspective transform. For each pixel (x, y) in the output image, the new value is taken from a position (a x + b y + c)/(g x + h y + 1), (d x + e y + f)/(g x + h y + 1) in the input image, rounded to nearest pixel.

    Исходя из этого, можно составить простые примеры:
    (1, 0, 0, 0, 1, 0, 0, 0) - не изменит картинку
    (1, 0, 0, 0, 2, 0, 0, 0) - "сплющит" картинку в 2 раза по вертикали, и т.д.

    Чтобы найти эти коэффициенты можно воспользоваться вспомогательной функцией, например, отсюда https://stackoverflow.com/a/14178717
    Ответ написан
    Комментировать
  • На плоскости расположены n предметов, их нужно переместить в заданные n позиций. Как это сделать?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ну вы бы хотя бы присказку какую-то добавили о том как рассуждали, что у вас не получилось и всё такое.
    А-то вот решите мне эту задачу, а я думать совсем не хочу.

    Давайте, учитесь уже рассуждать. Задачка несложная, видимо олимпиадная, но для каких-нибудь девятых-десятых классов. Хотя че-то, помнится, там посложнее были.

    Вот у вас есть 50 точек. И ещё 50 точек. Между каждой парой из них (а пар 50 в квадрате) есть какое-то расстояние. Там написано, что точки на плоскости, а значит расстояния между точками вас учили считать в школе по теореме пифагора.
    Если знаете расстояние между точками и знаете скорость каждой точки, значит можно посчитать время.
    Осталось что?
    Ну думайте.
    Этот ресурс не для того, чтобы двоечникам помогать.
    Возможно ваши соперники по олимпиаде сейчас сами думают, а вы, позорник, тут халтурите.
    Ответ написан
    Комментировать
  • Как визуализировать данные, состоящие из координаты и величины?

    @dmshar
    Читал-читал, но так до конца и не понял, что-же вам надо. Вот такие двумерные графики, где цвет или третья координата зависят от значения параметра? Или что-то другое? И да, все эти графики строятся именно по заданным значениям в точках, разумеется.
    5ea59a80bd5a4535962681.png
    Ответ написан
    7 комментариев
  • Как подсчитать вероятность ответить верно хотя бы на 1 вопрос в тесте?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    P = 1 - 0.755 = 0.7627
    Ответ написан
    8 комментариев
  • Как определить видимые ребра многоугольника к точки на плоскости?

    Многоугольник — это набор вершин, заданный в определенном порядке. Вот и определите нормали исходя из этого порядка. Например, задайте себе как стандарт обход многоугольника всегда по часовой стрелке, тогда нормаль грани всегда будет под 90 градусов влево от вектора, проведенного из вершины n в вершину n+1.
    В 2д движках обычно так и делают.
    Ответ написан
    Комментировать
  • Как рассчитать от даты до даты?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    >>> import datetime
    >>> from dateutil import relativedelta
    >>> past_date = '2017-07-31'
    >>> past_date = datetime.datetime.strptime(past_date, '%Y-%m-%d')
    >>> today = datetime.datetime.now()
    >>> diff = relativedelta.relativedelta(today, past_date)
    >>> f'{diff.years} years, {diff.months} months and {diff.days} days'
    '2 years, 8 months and 17 days'
    Ответ написан
    Комментировать
  • Как убрать лесенку после Image.rotate()?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    resample=Image.BICUBIC, expand=True
    Всегда лучше поворачивать большое изображение, а потом уменьшать, чем наоборот, поворачивать маленькое, а потом увеличивать.
    Ответ написан
    5 комментариев
  • Как сравнивать кириллические символы в Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Лучше это сделать так:
    str1 = "АБВГДЕ"
    set_of_char = set("ЕОРФ")
    for c in str1:
        if c in set_of_char:
            print("OK")

    Ещё лучше так:
    str1 = "АБВГДЕ"
    set_of_char = set("ЕОРФ")
    if set(str) & set_of_char:
        print("OK")
    Ответ написан
    Комментировать
  • Я хочу написать видео переводчик с помощью питон, с чего начать?

    solotony
    @solotony
    покоряю пик Балмера
    начинать любой проект следует с написания технического задания
    Ответ написан
    Комментировать
  • Как вырезать картинки со спрайтов?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я бы взял инструмент выделение, потянул бы мышкой, нажал CTRL +C, CTRL +N, ENTER, CTRL +V
    И повторил бы это 3 раза.

    Если без шуток в чем проблема?
    Ответ написан
    Комментировать
  • Pyhton PIL почему не работает нормально?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    from PIL import Image
    
    q = input("Название картинки: ")
    img = Image.open(q)
    img = img.convert("RGB")
    (w,h) = img.size
    print(w*h)
    with open("img.txt","w") as file:
        for y in range(h):
            for x in range(w):
                r, g, b = img.getpixel((x,y))
                file.write("#" if (r, g, b) == (0, 0, 0) else "_")
            file.write("\n")
    
    print(img.getpixel((0,0)))
    input("Enter что-бы завершить: ")
    Ответ написан
    5 комментариев
  • Что нужно знать, чтобы решить эти две задачки на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Нужно примерно следующее:
    • Что такое умножение.
    • Что такое таблица.
    • Что такое таблица умножения, зачем она бывает нужна и как устроена.
    • Надо понимать основы алгоритмизации: что такое алгоритм, какие есть базовые алгоритмические структуры (последовательное выполнение, ветвление, цикл) и для чего они нужны.
    • Нужно понимать синтаксис питона хотя бы на базовом начальном уровне. Можно почерпнуть из практически любой книги Марка Лутца про питон. Можно поискать вообще любую книга а-ля питон для чайников - этого будет достаточно для решения вашей задачи.
    • Нужно понимать концепцию цикла, вложенных циклов.
    • Нужно понимать базовую арифметику.


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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В питоне функции и классы - это тоже объекты. У них есть особый синтаксис объявления, после объявления эти объекты доступны по имени как и любой другой объект с именем (переменная).

    Лирическое отступление. В питоне переменные работают не так же как в Си. В Си переменная - это ящичек, а значение в нём как бы лежит. В питоне объект - это как чайный пакетик, а имя как ярлычок на ниточке. Можно к одному пакетику несколько ярлычков привязать, то есть несколько имён. В Си это достигается указателями. В питоне, получается, всё "как бы указатели" и разыменовываются они неявно, под капотом. Но сейчас не о том...

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

    Повторюсь, в общем случае декоратор - это функция, которая либо немного меняет какой-то объект, либо делает на его основе или по его мотивам какой-то новый. Новый при этом может как содержать старый внутри, так и не содержать. Декоратор может и вовсе не трогать сам объект, а возвращать его без изменения, зато регистрировать его в каком-то внешнем списке создавая так называемый сайд-эффект. Примеров можно придумать уйму.

    Итак:
    my_object_instance = MyClass()
    my_object_instance = my_decorator1(my_object_instance)
    my_object_instance2 = my_decorator2(my_object_instance)

    В этом примере дважды задекорирован объект. Здесь при первом декорировании оригинал нам, судя по коду, не нужен (или декоратор его не менял, смотря что за декоратор, может просто зарегал где-то в списке...), а при втором декорировании нам остаётся доступным и оригинал и задекорированная версия.

    Пока всё просто и не ясно причем тут собаки и чем эти декораторы отличаются от обычных функций. На второй вопрос ответ прост -- ничем особенным. Просто мы такой смысл вкладываем в эти функции. Такая абстрактная концепция.

    В Питоне есть синтаксический сахар, чтобы декорировать объявления функций и классов.

    Иногда хочется наглядно модифицировать или зарегистрировать в каком-то глобальном реестре класс или функцию, но объявление при этом сильно менять не хочется.
    Можно так:
    my_pretty_functions = {}
    
    def my_deco(decorated_function):
        '''Это декоратор, который не меняет декорируемый объект, 
        лишь регистрирует его в словаре'''
        my_pretty_functions[decorated_function.__name__] = decorated_function
        return decorated_function
    
    def my_function(x):
        return x ** 2
    
    # вот декорирование вручную, без сахара
    my_function = my_deco(my_function)
    
    # Но в питоне же есть сахар для этого, и вот альтернативный вариант декорирования:
    @my_deco
    def my_other_function(x):
        return x ** 3

    Эти два способа декорирования работают одинаково, просто "собака" - это синтаксический сахар.

    Не все декораторы такие безобидные. Декоратор может вернуть совершенно другую функцию или вообще что угодно. Тогда это что угодно окажется под оригинальным именем функции, а оригинальная функция вовсе может быть потеряна (выброшена) или засунута в новую с помощью так называемого "замыкания".

    Но замыкания - это отдельная большая история, а узнать об этом вы сможете, к примеру, на занятиях по питону на otus.ru, где я скоро, надеюсь, стану преподавать=).

    Спрашивайте сто не понятно. Я тут не рассмотрел даже малой доли от разных способов применения декораторов в народном хозяйстве. Надо будет состряпать специальный курс про это.
    Ответ написан
    Комментировать
  • 3d графика в Python, какую библиотеку использовать?

    я бы генерировал 3D примитивы на прозрачном фоне в чём-то одном,
    и объединял с исходным видео с помощью ffmpeg. Налету, вполне.
    Ответ написан
    Комментировать
  • Как сделать чтобы цикл for прошелся по списку и при условии True вывел текст один раз?

    @danSamara
    Цикл не нужен.
    if user in passworld:
        print('Ваш пароль найден!')
    else:
        print('пароль не найден...')


    Но если необходимо всё же через цикл, то:
    for i in passworld:  # Скобки не нужны
        if i == user:  # Скобки не нужны
            print('Ваш пароль найден!')
            break
    else:
        print('пароль не найден...')
    Ответ написан
    2 комментария
  • Как сохранить график построенный с помощью matplotlib в формат .bmp?

    @Iv_and_S
    Python Imaging Library (PIL) - поддерживает и .png и .bmp.
    https://pillow.readthedocs.io/en/stable/handbook/i...
    т.е. просто конвертить файл в .bmp после сохранения
    Ответ написан
    Комментировать
  • Как переделать изображения в SVG?

    zahmTOD
    @zahmTOD
    Графический дизайнер
    По идее — никак. Это разные сущности. SVG - Scalable Vector Graphics. Т.е. векторная графика. А у вас в наличии JPG и PNG, которая растровая графика.
    Технически вы можете вставить растр в svg-файл, но практически «вес» картинок это не уменьшит.
    Ответ написан
    Комментировать