Ответы пользователя по тегу Программирование
  • Как на Python Сделать свою сортировку?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день, Олег.

    Свою сортировку, реально, можно делать как угодно, в зависимости от задачи: и sort(), и sorted(), и слайсы, и пр. Что касается вашего конкретного примера с картами, вот, например, простой вариант:
    >>> symbols_start = '23456789TJQKA'
    >>> symbols_heap = 'A926K'
    >>> symbols_heap_sort = ''.join(i for i in symbols_start if i in symbols_heap)
    >>> symbols_heap_sort
    '269KA'
    Ответ написан
    4 комментария
  • Как эффективно развивать себя как разработчика?

    aRegius
    @aRegius
    Python Enthusiast
    Вам будет гораздо легче решать большую часть стоящих перед вами задач (а другим гораздо легче вам в этом помогать), как только вы перестанете описывать их общими фразами (типа "максимально эффективно", "полноценный дев", "хорошим специалистом" и т.п.).

    Будьте конкретны:
    - "Моя цель на ближайшие 6 месяцев - вырасти до позиции XXX в текущей компании". И далее:
    - "Что мне нужно сделать для того, чтобы в течение 6 месяцев в моей компании вырасти до XXX ?"

    С этим уже можно обратиться к людям, обладающим достаточной компетенцией в помощи вам с ответом на этот вопрос: "Для того, чтобы в нашей компании стать XXX, нужно знать ЭТО и уметь ТО".

    - "Что мне нужно для того, чтобы узнать ЭТО и научиться делать ТО ?". Cоставляете план действий (разбиваете необходимые шаги на месяцы, недели, дни) с дежурными сроками (для проверки запланированного и достигнутого, внесения в связи с этим необходимых корректировок и т.п.) - и вперед.

    Но все начинается с конкретики:
    - "...хочется максимально эффективно развивать себя...". Что конкретно значит (для вас) "максимально эффективно"? По каким критериям вы будете определять, эффективно вы развиваетесь или нет? Количество прочитанных книг? Сложность решаемых задач? Что конкретно?
    - "...чтобы стать не только полноценным девом...". Что конкретно значит (для вас) "полноценный дев"? Как вы поймете, что стали "полноценным девом"? Вы добьетесь определенной должности? Будете зарабатывать определенную сумму денег? Что конкретно?

    Успехов.
    Ответ написан
    Комментировать
  • Как Подсчитать количество предложений в тексте - Python?

    aRegius
    @aRegius
    Python Enthusiast
    >>> import re
    >>> def sent_count(text):
    	        new_text = re.sub(r'[.!?]\s', r'|', text)
    	        sent_num = len(new_text.split('|'))
    	        print('В этом тексте {} предложения.'.format(sent_num))
    
    	
    >>> text = 'Чиполлино был сыном Чиполлоне. И было у него семь братьев: Чиполлетто и так далее – самые подходящие имена. Люди они были хорошие, да только не везло им в жизни.'
    >>> sent_count(text)
    В этом тексте 3 предложения.
    >>> text = "Чиполлино был сыном Чиполлоне?! И было у него семь братьев: Чиполлетто и так далее – самые подходящие имена. Люди они были хорошие, да только не везло им в жизни... Правда?"
    >>> sent_count(text)
    В этом тексте 4 предложения.
    Ответ написан
    Комментировать
  • Как разбить текст на предложения, не используя регулярные выражения?

    aRegius
    @aRegius
    Python Enthusiast
    "Дожмите" ваше собственное решение
    text = text.replace('. ', '.|').replace('! ', '!|').replace('? ', '?|')


    добавив проверку на вхождение заглавных букв и чуточку подкорректировав аргументы в replace():
    >>> letters = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЭЮЯ'
    >>> text = '"Смотри, как расхрабрился!" говорил Чуб, оставшись один на улице..' # и далее по тексту
    >>> for letter in letters:
    	        if letter in text:
    		            text = text.replace('. '+letter, '.|'+letter).replace('. "'+letter, '.|"'+letter).replace('! '+letter, '!|'+letter)
    		
    >>> for sentence in text.split('|'):
    	        print(sentence)
    	
    "Смотри, как расхрабрился!" говорил Чуб, оставшись один на улице.
    "Попробуй, подойди! вишь какой! вот большая цяца! ты думаешь, я на тебя суда не найду.
    Нет, голубчик, я пойду, и пойду прямо к комиссару.
    Ты у меня будешь знать.
    .... 
    и т.д.
    Ответ написан
    Комментировать
  • Уроки Python + django, что посоветуете?

    aRegius
    @aRegius
    Python Enthusiast
    Django by Example
    Другие варианты (с подобной информацией) лично мне неизвестны.

    Кликните на изображении обложки книги (над которым стоит указатель со стрелкой Look inside), перейдите в раздел Table of Contents и ознакомьтесь с информацией о темах, представленных в книге.
    Ответ написан
    Комментировать
  • Как вывести результат функции?

    aRegius
    @aRegius
    Python Enthusiast
    Уберите либо аргумент name из функции, либо переменную name из ее тела. Обе одновременно - не нужны.

    Или так:
    >>> def my_func():
    	        name = input('What is your name?: ')
    	        print(name)
    
    >>> my_func()
    What is your name?: Alex
    Alex
    >>> my_func()
    What is your name?: Bob
    Bob

    Или так:
    >>> def my_func(name):
    	        print(name)
    
    >>> my_func('Alex')
    Alex
    >>> my_func('Bob')
    Bob
    Ответ написан
    9 комментариев
  • Python: замена ключевого слова значениями из списка по порядку следования?

    aRegius
    @aRegius
    Python Enthusiast
    Здравствуйте.

    Дополню Александра, что list у вас, скорее всего, будет иметь вид одной строки, типа "мама мыла раму"... А потому его нужно будет разбить сплитом - list.split() - иначе list[0] вернет лишь первый элемент строки (в приведенном мною примере букву "м").

    >>> text = '''
    [attachmentid=1923106] 
    [attachmentid=1923108] 
    [attachmentid=1923110] 
    [attachmentid=1923112] 
    [attachmentid=1923114]
    '''
    >>> text[0]
    '\n'
    >>> text[1]
    '['
    
    
    >>> new_text = text.split()
    >>> new_text[0]
    '[attachmentid=1923106]'
    >>> new_text[1]
    '[attachmentid=1923108]'
    Ответ написан
  • Как сообразить алгоритм оптимизации?

    aRegius
    @aRegius
    Python Enthusiast
    Сергей, смотри, может подойдет такой вариант (я опишу общий принцип, реализация кода, ессно, на тебе):

    1. Сортируешь фрукты по их количеству, от большего к меньшему (например, 30 яблок, 25 груш, 20 апельсинов, 15 мандаринов, 10 слив, 5 бананов).

    2. Заполняешь корзины сверху - вниз (от больших объемов к меньшим). Заполняешь максимально полно - всю корзину, остаток оставляешь пока в стороне, не используешь.

    Например:
    шаг 1: 30 яблок и 3 корзины по 20... Заполняем 1 корзину полностью, остаток 10 яблок сохраняем на потом, сейчас не используем.
    шаг 2: 25 груш и 2 корзины по 20... Заполняем 1 корзину полностью, остаток 5 груш сохраняем на потом, сейчас не используем.
    шаг 3: 20 апельсинов и 1 корзина по 20... Заполняем 1 корзину полностью, остатка нет.
    шаг 4: 15 мандаринов и 1 корзина по 18... ПРОПУСКАЕМ, ищем вариант заполнения ПОЛНОЙ корзины...
    шаг 5: 15 мандаринов и 2 корзинs по 16.. ПРОПУСКАЕМ, ищем вариант заполнения ПОЛНОЙ корзины...
    шаг 6: 15 мандаринов и 6 корзин по 14... Заполняем 1 корзину полностью, остаток 1 мандарин сохраняем на потом, сейчас не используем.

    и т.д. .........

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

    Прогон сверху вниз нужен для того, чтобы рационально использовать корзины - ведь, если есть 1 яблоко, и 2 корзины (20 и 4 мест соответственно), логично положить его в корзину на 4 места.

    Как-то так. Я, конечно, не специалист в нативных алгоритмах, возможно есть какой-то "интерполяционный метод кажущейся дисперсии" для решения подобных задач - тут я пас :). Чем смог...
    Ответ написан
    3 комментария
  • Почему в Python при целочисленном делении (-1 // 2) получается ответ (-1)?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый вечер.

    Просто запомните, что оператор // производит деление, округляя результат до ближайшего меньшего целого значения. Вот и все.

    -1 / 2 = - 0.5. Ближайшее меньшее целое значение: -1.
    Ответ написан
    Комментировать
  • Как найти соседние элементы массива, сумма которых максимальна (минимальна)?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    num = [.........]
    opt = list(map(lambda x, y: (x + y, (x, y)), num, num[1:]))
    max_sum_pair = max(opt)    # итоговый кортеж МАКСИМУМ (сумма, (число 1, число 2))
    min_sum_pair = min(opt)     # МИНИМУМ
    Ответ написан
    Комментировать
  • Как улучшить теоретическую базу в программировании?

    aRegius
    @aRegius
    Python Enthusiast
    Артем, приветствую!
    Я далеко не гуру программирования, и тоже, кстати, программист-самоучка, однако мой жизненный опыт и здравый смысл в подобной ситуации продиктовал бы мне несколько иной подход к решению вопроса.

    1. Самое очевидное, простое и правильное (при условии, что для вас этот вопрос все еще актуален и насущен) - связаться с этими людьми повторно и уточнить лично у них, о каких именно знаниях идет речь. Как калька: "Добрый день! Меня зовут Артем, тогда-то я был у вас на собеседовании, мне отказали, сославшись на нехватку теоретических знаний. Вы не могли бы мне помочь советом, каких именно знаний мне не хватает? Эта информация помогла бы мне их приобрести...." Ну как-то так...

    2. На будущее, при возникновении подобных ситуаций, задавайте такие вопросы прямо на собеседовании. Иначе потом снова будут эти "гадания на кофейной гуще".

    3. По каким критериям вы собираетесь выбирать источник знаний, предложенный вам мнением людей, каждый из которых представляет собой уникальную смесь возраста, знаний и опыта, а, соответственно, свое видение ситуации?

    4. Обучения для себя, обучение в ВУЗе, и обучение для конкретной работы - суть разные вещи. Вам нужно третье, насколько я понял. Для этого нужно четко понимать, что нужно работодателю. И вариантов хорошего результата собеседования есть два - вас взяли на работу; вас не взяли на работу, но вы знаете, что конкретно вам еще нужно сделать (чего вам не хватило), чтобы вас взяли.

    Смоделируем ситуацию:
    Вы пришли на собеседование. Вам отказали: "У вас недостаточно теоретических знаний". Вы сказали "Ок" и ушли. Задали вопрос на Тостере, вам предложили 15 вариантов ответа - надо учить такие-то алгоритмы, такие-то паттерны и прочее... Вы перезваниваете рекрутеру, задаете вопрос, а вам отвечают, что вам не хватает теоретических знаний о протоколах передачи данных... Ну к примеру...

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

    Такова моя точка зрения. Удачи!

    P. S. Немножко юмора, касательно знаний, заказчиков и инструментария для решения конкретной задачи.
    Ответ написан
    1 комментарий