• Зачем двоеточие в python?

    aRegius
    @aRegius
    Python Enthusiast
    Истиной в последней инстанции здесь может быть только ответ Гвидо. А ответ Гвидо на этот вопрос вы можете прочитать ТУТ
    Ответ написан
    4 комментария
  • Как правильно заполнять формы в Grab (Python)?

    aRegius
    @aRegius
    Python Enthusiast
    Я "не в зуб ногой в Grab", но вам пишут, что вместо g.set_input и g.submit нужно использовать g.doc.set_input и g.doc.submit соответственно.
    Ответ написан
    2 комментария
  • Случайное добавление в список с проверкой на одинаковые элементы, как это правильно сделать?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.
    Для подобных задач есть shuffle

    >>> import random
    >>> WORDS =["kot", "maga", "lada", "sobaka"]
    >>> NEW_WORDS = WORDS[:]
    >>> random.shuffle(NEW_WORDS)
    >>> NEW_WORDS
    ['lada', 'maga', 'sobaka', 'kot']
    Ответ написан
    Комментировать
  • 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]'
    Ответ написан
  • Обойти строку в for in можно, но 'str' object is not an iterator. Не все, что в for in - итераторы?

    aRegius
    @aRegius
    Python Enthusiast
    >>> s = 'ABC'   #iterable, но не iterator
    >>> for char in s:
    	        print(char)
    
    A
    B
    C

    >>> s = 'ABC'
    >>> it = iter(s)   #а вот уже iterator, созданный из iterable
    >>> for i in range(4):
    	        print(next(it))
    
    A
    B
    C
    Traceback (most recent call last):
      File "<pyshell#35>", line 2, in <module>
        print(next(it))
    StopIteration
    >>>
    Ответ написан
    4 комментария
  • Какие книги посоветуете по python 3?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день.

    1. "Куда двигаться дальше, после изучения основ?"

    — Скажите, пожалуйста, куда мне отсюда идти?
    — А куда ты хочешь попасть?
    — ответил Кот.
    — Мне все равно… — сказала Алиса.
    — Тогда все равно, куда и идти, — заметил Кот.
    Льюис Кэрролл, "Алиса в стране чудес"

    Объективно, самым востребованным направлением в Python остается web/backend. А это значит фреймворки: Django, Flask, Pyramid, Bottle, Web2py и т.д. Из них, если в первую очередь интересует поиск работы - Django либо Flask (как наиболее востребованные). В противном случае - выбирайте любой, который по душе. Справедливости ради, в последнее время в требованиях вакансий часто мелькает "...знание ЛЮБОГО фреймворка..." или "...знание Django или ЛЮБОГО другого фреймворка...".

    В случае, если ваш выбор иной, погуглите требования к технологиям, используемым в выбранном вами направлении и вперед!

    2. "Какие модули самые важные из стандартной библиотеки?"

    Ответ на этот вопрос тесно связан и зависит от ответа на предыдущий.

    3. "Какие книги почитать, желательно, чтобы практика в них была, а не только разбор написанного кода?"

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

    Теперь по существу и максимально, с моей точки зрения, соответствующее вашему запросу:
    1. Python - Python Cookbook (пожалуй, самая практическая книга по Python; конкретные небольшие задачи из реальных практик и способы их решения; и да, Python 3 конечно)
    2. Django - Django by Example (на основе этой книги вы сможете, при желании, сделать свой собственный проект)

    4. "С техническим английском более менее нормально, читать книги на английском могу."

    Это огромный плюс для вас, бесспорно.

    Как-то так...
    Ответ написан
    Комментировать
  • Как сделать "компактную" пагинацию в django?

    aRegius
    @aRegius
    Python Enthusiast
    Оставьте две секции:
    if page.has_previous и if page.has_next

    По сути:

    if page.has_previous
    page.number #активная ссылка
    else
    page.number

    if page.has_next
    page.paginator.num_pages #активная ссылка
    else
    page.paginator.num_pages

    Будет что-то типа (в зависимости от оформления) "Previous...................Next"
    Ответ написан
    Комментировать
  • Python: Почему результат этого кода [1], а не []?

    aRegius
    @aRegius
    Python Enthusiast
    Потому что вы используете атрибут класса. А атрибуты классов совместно используются всеми экземплярами. А вот атрибуты экземпляров уникальны для каждого экземпляра:
    >>> class M:
    	    data = []
    	    def __init__(self, value):
    		    self.value = value
    
    >>> x = M(1)
    >>> y = M(2)
    >>> x.value
    1
    >>> y.value
    2
    >>> x.data
    []
    >>> y.data
    []
    >>> x.data.append(10)
    >>> x.data
    [10]
    >>> y.data
    [10]
    >>> x.value += 10
    >>> x.value
    11
    >>> y.value
    2
    Ответ написан
    Комментировать
  • Глупый вопрос по Python?

    aRegius
    @aRegius
    Python Enthusiast
    Собственно, для решения подобного рода задач в Python есть класс Counter из модуля collections. Это и будет самый оптимальный и простой вариант:

    >>> text = 'eujiyghkiuyhjiu'
    >>> from collections import Counter
    >>> Counter(text)
    Counter({'u': 3, 'i': 3, 'h': 2, 'j': 2, 'y': 2, 'e': 1, 'k': 1, 'g': 1})
    Ответ написан
    Комментировать
  • Как правильно создать окружение virtualenv?

    aRegius
    @aRegius
    Python Enthusiast
    Django by Example хорошая книга. Но попробуйте для начала Django Girls Tutorials. Там подробный ответ в том числе на ваш текущий вопрос (ссылка на него и ведет сразу), написанный простым для понимания языком.
    Ответ написан
    Комментировать
  • Нужен ли настрольный справочник по Python?

    aRegius
    @aRegius
    Python Enthusiast
    И да, и нет. Все зависит от цели. Постараюсь объяснить.

    Я уже как-то упоминал про тот факт, что люди воспринимают информацию по-разному. Мой приоритет - книги (а не аудио/видео, например). Мой подход к обучению - step-by-step, от простого к сложному, одна технология в фаворе. Но эта последовательность не линейна - на определенном этапе она становится цикличной, или, что точнее, спиралевидной: в пройденном, как тебе кажется, материале ты начинаешь замечать новые моменты, ранее упущенные из виду.

    Пример:
    я начинал с Доусона. Проработав капитально, взялся за Лутца. После - Fluent Python, Python Cookbook и иже с ними... (HTML, Django, CSS, работа над собственным проектом - это я все опускаю, как не относящиеся к сути вопроса детали. Говорим только про Python и книги.)

    Так вот, к Доусону я больше не возвращался, к Лутцу - иногда возвращаюсь, а "иже с ними" я перечитываю по кругу и каждый раз открываю для себя что-то новое. Это, скорее всего, связано с тем, что всякий раз ты возвращаешься на исходную позицию с уже более прокачанными знаниями/пониманием, отстутствие которых не позволяет охватить все и сразу с первой попытки; плюс, каждый автор преподносит один и тот же материал с другой стороны (другими примерами), что дополнительно углубляет твое понимание пройденого.

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

    Замечу, что все вышеописанное базируется на предположении, что вы стремитесь к максимальному развитию в рамках своей технологии. На мой взгляд, нельзя объять необъятное и хвататься за все сразу; step-by-step, как я говорил. Должна быть, по меньшей мере одна крепкая база + сопутствующее. Но эта база должна быть отшлифована до блеска, как птичьи плоды одного из небезызвестного персонажа из бронзы, расположеного на севере парка Боулинг-Грин в Финансовом квартале Нью-Йорка, в двух кварталах южнее Нью-Йоркской фондовой биржи.

    Для меня такой базой, в настоящее время, является Python. Ему я и уделяю большую часть времени, распределяя оставшееся на Прочее. А вот когда я абсолютно и полностью исчерпаю Python - буду искать следующую Приоритетную цель на его место. И так далее. Процесс, фактически, бесконечен.

    Вот именно поэтому справочник не нужен. В нем просто нет резона. У вас всегда должен быть под рукой актуальный материал, который будет двигать вас вперед. В этом смысле справочник - это некий костыль для постигшего дзен, умудренного опытом Змея, которому уже лень думать, некуда развиваться, но иногда нужно по-быстренькому напомнить себе о временах буйной молодости, воспоминания о которых можно освежить в памяти открыв 135-ую страницу - первый абзац, вторая строка :)

    Ну а если все вышенаписанное не про вас, Python так, мимо проходил, тогда, может быть, да. Вот очень неплохой вариант.

    P.S. Про литературу в целом можете посмотреть ТУТ.
    Ответ написан
    2 комментария
  • Какую посоветуете хорошую книгу по HTML и CSS новичку?

    aRegius
    @aRegius
    Python Enthusiast
    + HTML (в смысле, что касается CSS, солидарен с rasswet)
    Ответ написан
    Комментировать
  • Как работать с print?

    aRegius
    @aRegius
    Python Enthusiast
    print('lol')

    В 3-ем питоне скобки нужны.
    Ответ написан
    4 комментария
  • Хорошая практика для Python?

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

    Лутца читать лучше после Доусона. А вот читая Доусона, вы и сделаете первый шаг к тому, чтобы не "тупить в экран", если, конечно, подойдете к работе (именно работе, а не просто чтению) с этой книгой серьезно - там достаточное количество интересных и практичных задач.
    Ответ написан
    4 комментария
  • Как мне получить 10 самых младших значений?

    aRegius
    @aRegius
    Python Enthusiast
    ну я благодаря этому Counter получаю данные для графика
    x = dictforgraf2.keys()
    y = dictforgraf2.values()
    и мне надо получить фрагмент графика с первыми 10 значениями


    list(x)[:10]
    list(y)[:10]
    Ответ написан
    2 комментария
  • Зачем в Python есть два способа создания копии списка?

    aRegius
    @aRegius
    Python Enthusiast
    Приветствую, weranda.

    ...Почему так происходит – при изменении во вложенном списке с которого снята копия элементы меняются и в других списках, а отдельные элементы в скопированных списках не меняются?...

    Потому что [:], copy(), list() создают т.н. "поверхностные" копии. Используйте copy.deepcopy() для решения подобной проблемы:
    >>> a = [1 , 2, [3, 4]]
    >>> import copy
    >>> b = copy.deepcopy(a)
    >>> a[2][1] = 156
    >>> a
    [1, 2, [3, 156]]
    >>> b
    [1, 2, [3, 4]]
    Ответ написан
    Комментировать
  • Что я сделал не правильно или что я не продумал?

    aRegius
    @aRegius
    Python Enthusiast
    Привет, Вадим.

    while health_hero > 0 and health_troll > 0:
        damage_hero = random.randint(1, 5)
        damage_troll = random.randint(1, 5)
        health_hero -= damage_troll
        health_troll -= damage_hero
        print(health_hero, health_troll)
    
    if health_hero > health_troll:
        print("Победил герой!")
    else:
        print("Победил тролль!")
    Ответ написан
    4 комментария
  • Как составить план обучения на ближайшиее время?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день, Дмитрий.

    1. В такой последовательности:
    Python
    a) Майкл Доусон - рус ... eng
    b) Марк Лутц - рус ... eng
    c) Дэвид Бизли + Лучано Рамальо
    Дальше - самостоятельный выбор, исходя из личных потребностей.
    Django
    a) Джейкоб-Каплан Мосс и Адриан Головатый - рус ... eng
    b) Django Girls Tutorial
    c) Гринфилды + Равиндран

    Параллельно читаем Django documentation

    2. HTML5 + CSS3 + JS + SQL.
    Знать на уровне, достаточном для реализации собственного проекта с нуля (скажем, свой сайт). Для этого, правда, достаточно HTML и CSS, в объеме указанных книг. Другой вопрос, что и JS, и SQL практически всегда требуются в багаже знаний при устройстве на работу (достаточно посмотреть вакансии).

    3. Нет, просто нету смысла. Актуальной качественной литературы по Python хватает. Есть некоторые исключения (некоторые из них мною упомянуты), но в целом, повторюсь, с современной литературой у Python все в полном порядке. Ищите на Amazon, сортируя по дате выхода.
    Ответ написан
    9 комментариев
  • Какое из двух простых условий использовать?

    aRegius
    @aRegius
    Python Enthusiast
    Приветствую, weranda.

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

    Поэтому вариант 1.

    Дополнительный, более наглядный, пример навскидку к сказанному:

    хуже:
    >>> my_lists = [[[1, 2, 3], [4, 5, 6]]]
    >>> flat = [x for sub1 in my_lists for sub2 in sub1 for x in sub2]
    >>> flat
    [1, 2, 3, 4, 5, 6]


    лучше:
    >>> my_lists = [[[1, 2, 3], [4, 5, 6]]]
    >>> flat = []
    >>> for sub1 in my_lists:
             for sub2 in sub1:
    	             flat.extend(sub2)
    >>> flat
    [1, 2, 3, 4, 5, 6]


    Такова моя точка зрения.
    Ответ написан
    Комментировать
  • Как научиться правильно писать код по паттерну MVC в pyhon?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день, Дмитрий.

    Паттерн MVC это не столько к Python, сколько, скажем, к Django (или, другими словами, не столько к языку, сколько к фреймворку). Хотя, справедливости ради, Django, наряду с MVC, позиционируют и как MTV (Model-Template-View)... Но это частности, не имеющие отношения к Вашему текущему вопросу.

    Меня, в свое время, абсолютно удовлетворило описание MVC, предложенное создателями Django - Адрианом Головатым и Джейкобом Капланом-Моссом. А ввиду того, что я обычный человек - не уникум, не победитель олимпиад и не мастер спорта по шахматам, полагаю, что Вам также может оказаться полезным.

    Издание на русском: Django.Подробное руководство (Второе издание)
    Главы 1 ("Введение в Django") и 5 ("Модели", подраздел "Шаблон проектирования MTV (или MVC)")

    Или то же издание на английском: The Definitive Guide to Django. Web Development Done Right, Second Edition

    Обе были в открытом доступе.
    Ответ написан
    3 комментария