Python: задачки и вопросы @quiz_python Channel on Telegram

Python: задачки и вопросы

@quiz_python


Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media

Python: задачки и вопросы (Russian)

Добро пожаловать в канал 'Python: задачки и вопросы'! Если вы хотите подготовиться к собеседованию или прокачать свои навыки в программировании на Python, то этот канал идеально подойдет для вас. Здесь вы найдете множество интересных задачек и вопросов, которые помогут вам улучшить свои знания и навыки в этом языке программирования.

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

Не упустите возможность использовать этот канал для своего развития и самосовершенствования! Присоединяйтесь к 'Python: задачки и вопросы' прямо сейчас и начните свой путь к новым достижениям в программировании на Python!

Python: задачки и вопросы

08 Feb, 07:00


#размяться

Python: задачки и вопросы

07 Feb, 17:06


Код выведет [(‘a’, ‘x’)] из-за расположения return.

Функция myzip() принимает произвольное количество последовательностей (в данном случае строки S1 и S2).

seqs = [list(S) for S in seqs] преобразует каждую входную последовательность в список — [['a', 'b', 'c'], ['x', 'y', 'z', '1', '2', '3']].

Цикл while продолжает выполняться, пока все списки в seqs содержат хотя бы один элемент. Входные списки имеют по одному элементу на данный момент (['a', 'b', 'c'] и ['x', 'y', 'z', '1', '2', '3']).

res.append(...): внутри цикла создается кортеж из первого элемента каждого списка и добавляется в res. Первые элементы будут 'a' и 'x', так что в res добавится кортеж ('a', 'x').

Очень важно отметить, что оператор возврата (return) находится внутри цикла while. Это означает, что функция сразу же вернет res после первой итерации цикла. Таким образом, функция завершает свое выполнение и возвращает res, который на этом моменте содержит [('a', 'x')]. После этого выполнение функции прекращается, и дальнейшие итерации не происходят.

Python: задачки и вопросы

07 Feb, 07:00


#размяться

Python: задачки и вопросы

06 Feb, 17:06


Функция zip() принимает два или более итерируемых объекта (в данном случае, строки) и создает итератор, который генерирует кортежи, содержащие элементы, исходящие от каждого из итерируемых объектов на соответствующих позициях. Это значит, что zip будет объединять первый элемент S1 с первым элементом S2, второй элемент S1 со вторым элементом S2 и так далее.

Поскольку S1 содержит 3 элемента, а S2 — 6 элементов, zip() объединит только столько элементов, сколько есть в наименьшем итерируемом объекте, то есть в S1.

Python: задачки и вопросы

06 Feb, 07:00


#размяться

Python: задачки и вопросы

05 Feb, 17:06


L, S = [1, 2, 3], 'spam'

for i in range(len(S)): # Цикл с подсчетом 0.3
S = S[1:] + S[:1] # Перемещение головного элемента в конец
print(S, end=' ')

Python: задачки и вопросы

05 Feb, 07:00


#размяться

Python: задачки и вопросы

02 Feb, 17:06


Код выводит S P A M, а не SPAM, потому что используется оператор распаковки *, который распаковывает элементы генератора и передает их как отдельные аргументы в функцию print().

- Генераторное выражение: (x.upper() for x in 'spam') создает генератор, который преобразует каждую букву строки 'spam' в верхний регистр, выдавая S, P, A, M по одному.

- Оператор * (распаковка) передает все отдельные элементы генератора как отдельные аргументы в функцию print(). Это эквивалентно вызову print('S', 'P', 'A', 'M').

- По умолчанию print() разделяет свои аргументы пробелами при выводе. Поэтому получаем итоговый результат: S P A M.

Python: задачки и вопросы

02 Feb, 07:00


#ловушка

Python: задачки и вопросы

01 Feb, 17:06


Аргументы со звездочкой способны распаковывать итерируемый объект в индивидуальные аргументы. Однако в нашем примере также присутствует генератор.


def f(a, b, c):
print('%s, %s и %s' % (a, b, c))

# Распаковка значений генераторного выражения
f(*(i for i in range(3)))


Генераторы вместо построения результирующего списка в памяти возвращают итерируемый объект. Прием применим также к словарям и представлениям:


D = dict(а='Bob', b='dev', с=40.5)

# Нормальные ключевые аргументы
f(a='Bob’, b='dev’, с=40.5) # Bob, dev и 40.5

# Распаковка словаря: ключ=значение
f(**D) # Bob, dev и 40.5

# Распаковка итератора ключей
f(*D) # b, c и a

# Распаковка итератора представления
f(*D.values()) # Bob, dev и 40.5\nNone


None выводится, потому что это означает последний шаг итерирования (StopIteration). Подробнее про это читайте в этом посте.

Python: задачки и вопросы

01 Feb, 07:00


#ловушка

Python: задачки и вопросы

31 Jan, 17:05


В версии Python 3.3 и выше есть расширенный синтаксис для оператора yield, который делает возможным делегирование работы подгенератору с помощью конструкции from генератор. В простых ситуациях он эквивалентен выдаче в цикле for — в следующем коде вызов list заставляет генератор выпустить все свои значения, а включение в круглых скобках является генераторным выражением:


def both(N):
for i in range(N): yield i
for i in (x ** 2 for x in range(N)): yield i

print(list(both(5))) # [0, 1, 2, 3, 4, 0, 1, 4, 9, 16]

Python: задачки и вопросы

24 Jan, 07:00


#ловушка

Python: задачки и вопросы

23 Jan, 17:13


Эта задача — логическое продолжение предыдущей. Мы имеем дело с генераторной функцией.

Значения отправляются генератору G путем вызова G.send(значение). Затем код генератора возобновляет выполнение, и выражение yield в генераторе возвращает значение, переданное send. Если вызывается обычный метод G.__next_() (или его эквивалент next(G)) для продвижения вперед, тогда yield просто возвращает None.


>>> next(G) # Сначала должен вызываться next(), чтобы запустить генератор
... 0
>>> G.send(77)
... 77
... 1

Python: задачки и вопросы

23 Jan, 07:00


#ловушка

Python: задачки и вопросы

22 Jan, 17:07


Генератор — это специальная функция, которая возвращает итератор, с помощью которого можно обойти некоторую последовательность значений.

В крупных программах генераторы могут быть лучше в плане памяти и производительности. Они позволяют функциям избежать выполнения всей работы заранее, что особенно полезно, когда результирующие списки большие или получение каждого значения требует длительных вычислений. Генераторы распределяют время, необходимое для производства серии значений, по всем итерациям цикла.


def gen():
for i in range(10):
X = yield i
print(X)

G = gen()
print(next(G)) # Сначала должен вызываться next(), чтобы запустить генератор


К протоколу генераторных функций добавлен метод next. Он осуществляет переход на следующий элемент в серии результатов, а также снабжает вызывающий код возможностью взаимодействия с генератором для влияния на его работу.

Формально yield теперь имеет форму не оператора, а выражения, которое возвращает
элемент, переданный next.

Python: задачки и вопросы

22 Jan, 07:00


#размяться

Python: задачки и вопросы

21 Jan, 07:00


#размяться

Python: задачки и вопросы

20 Jan, 17:00


DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)


Булевый параметр ascending отвечает за тип сортировки и по умолчанию равен True, т.е. датафрейм сортируется по умолчанию от меньшего к большему.

Python: задачки и вопросы

19 Jan, 17:00


Списковое включение может применяться также как разновидность операции проецирования столбцов. Стандартный API-интерфейс для работы с базами данных SQL в Python возвращает результаты запросов в форме последовательности последовательностей вроде следующей ниже; список представляет таблицу, кортежи — строки, а элементы в кортежах — значения столбцов:

listoftuples = [('bob', 35, 'mgr'), ('sue', 40, 'dev'), ('jack', 51, 'cio')]


С использованием цикла for можно было бы извлечь все значения из выбранного
«столбца» вручную, но списковые включения способны выполнить такую работу за один шаг, к тому же быстрее:

[age for (name, age, job) in listoftuples] # 35, 40, 52

Python: задачки и вопросы

19 Jan, 07:00


#размяться

Python: задачки и вопросы

18 Jan, 17:00


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

Python: задачки и вопросы

18 Jan, 07:00


#размяться

Python: задачки и вопросы

17 Jan, 17:00


В данном случае однократное списковое включение «сплющивает» матрицу до вектора, т.е. списка чисел. Чтобы понять такой код, его можно преобразовать к виду простых операторов:

res = []
for row in М: # Эквиваленты в виде операторов
for col in row: # Отступ для частей, находящихся дальше справа
res.append(col + 10)


Чтобы сохранить матрицу, достаточно использовать двойное списковое включение:

[[col + 10 for col in row] for row in M]

Python: задачки и вопросы

07 Jan, 07:00


#размяться

Python: задачки и вопросы

06 Jan, 17:06


Вы можете использовать стандартные значения для аргументов в случае снабжения их аннотациями — аннотация (и ее символ :) появляется перед стандартным значением (и символом =). В показанном ниже коде а: 'spam' = 4 означает, что аргумент а имеет стандартное значение 4 и аннотирован строкой 'spam':

>>> def func(a: 'spam' = 4, b: (1, 10) = 5, c: float = 6) -> int:
>>> return a + b + c
>>> func (1, 2, 3)
... 6
>>> func() # 4 + 5 + 6 (все стандартные значения)
... 15
>>> func(1, с=10) # 1+5 + 10 (ключевые аргументы нормально работают)
... 16
>>> func.__annotations__
{'с': <class 'float;>, 'b': (1, 10), 'a': 'spam', 'return': class 'int'>}

Python: задачки и вопросы

06 Jan, 07:00


#ловушка

Python: задачки и вопросы

04 Jan, 07:00


#размяться

Python: задачки и вопросы

03 Jan, 17:02


Код возвращает 6 из-за того, что функция func складывает три аргумента: a, b и c. Давайте разберем, что происходит в коде более подробно.

1. Функция func:

   def func(a: 'spam', b: (1, 10), c: float) -> int:

- a: 'spam': Это аннотация для параметра a. Текст 'spam' здесь не имеет особого значения в самом коде, скорее всего, это просто строка, которая может использоваться для документации или информации о том, какой тип ожидался. В действительности, это просто строка, и Python не проводит никаких проверок типов на основе этой аннотации.
- b: (1, 10): Это также аннотация, которая указывает, что b должен быть значением, соответствующим кортежу (1, 10). Однако, как и в случае с аннотацией для a, эта информация не проверяется в самом коде.
- c: float: Это аннотация, указывающая, что параметр c должен быть типа float.
- -> int: Это аннотация, которая указывает, что функция будет возвращать значение типа int.

2. Сложение аргументов:
Когда вы вызываете func(1,2,3), переданная строка 1, 2 и 3 становятся значениями a, b и c соответственно. То есть:
- a = 1
- b = 2
- c = 3

>>> func.__annotations__
... {'с': class 'float’>, ’b’: (1, 10), 'a': 'spam', 'return': <class ’int’>}

Python: задачки и вопросы

03 Jan, 07:00


#ловушка

Python: задачки и вопросы

02 Jan, 17:07


х = echo # Теперь x тоже ссылается на объект функции
х('Indirect call!') # Вызов объекта через имя х путем добавления ()


Поскольку аргументы передаются по присваиванию объектов, функции легко передавать другим функциям в качестве аргументов. Вызываемая функция затем может
вызвать переданную функцию, просто добавив аргументы в круглых скобках:

def indirect(func, arg) :
func(arg) # Вызов переданного объекта путем добавления ()

indirect (echo, 'Argument call!') # Передача функции другой функции


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

>>> schedule = [(echo, 'Spam!'), (echo, 'Ham?')]
>>> for (func, arg) in schedule:
>>> func(arg) # Вызов функций, встроенных в контейнер
... Spam!
... Ham!


В коде просто производится проход по списку schedule и вызов функции echo с одним аргументом на каждой итерации (обратите внимание в заголовке цикла for на распаковывающее присваивание кортежа, представленное в главе 13). Функции также можно создавать и возвращать для применения где-то в другом месте — замыкания, созданные в таком режиме, еще и предохраняют состояние из объемлющей области видимости.

Python: задачки и вопросы

02 Jan, 07:00


#размяться

Python: задачки и вопросы

01 Jan, 17:02


Концепции проектирования функций

Приступив к серьезному использованию функций, вы столкнетесь с необходимостью выбора того, как увязывать компоненты вместе — скажем, каким образом разложить задачу на содержательные функции (известно как сцепление), как функции должны взаимодействовать (называется связностью) и т.д. Вам также придется учитывать такие понятия, как размер функции, поскольку они напрямую влияют на удобство работы с кодом. Некоторые концепции относятся к категории структурного анализа и проектирования, но они применимы к коду на Python как и на любом другом языке.

Ниже приведен обзор нескольких универсальных рекомендаций для читателей, не знакомых с принципами проектирования функций.
Связность: используйте аргументы для входных данных и оператор return для выходных данных. Как правило, вы должны стремиться сделать функцию независимой от вещей, находящихся за ее пределами. Аргументы и оператор return часто будут наилучшими способами изоляции внешних зависимостей небольшим количеством хорошо известных мест в коде.
Связность: применяйте глобальные переменные, только когда они по-настоящему нужны. Глобальные переменные (т.е. имена во включающем модуле) обычно являются неудачным способом взаимодействия для функций. Они могут создать
зависимости и проблемы синхронизации, которые затрудняют отладку, изменение и многократное использование программ.
Связность: не модифицируйте изменяемые аргументы, если только такое изменение не ожидается вызывающим кодом. Функции могут модифицировать части передаваемых изменяемых объектов, но это (как и глобальные переменные)
создает сильную связность между вызывающим и вызываемым кодом, которая может сделать функцию слишком специфичной и хрупкой.
Сцепление: каждая функция должна иметь единственное унифицированное назначение. При надлежащем проектировании каждая функция должна делать что-то одно — то, что может быть резюмировано в простом повествовательном предложении. Если такое предложение оказывается слишком широким (например, “данная функция реализует всю мою программу”) или содержит много союзов (скажем, “данная функция дает сотруднику повышение и отправляет заказ пиццы”), тогда имеет смысл подумать о разбиении функции на несколько отдельных более простых функций. В противном случае не удастся повторно применять код, который лежит в основе действий, смешанных в функции.
Размер: каждая функция должна быть относительно небольшой. Цель естественным образом следует из предыдущей цели, но если ваши функции начали занимать несколько страниц на экране редактора, то видимо пришло время их разбить. Прежде всего, учитывая присущую коду Python лаконичность, длинная или глубоко вложенная функция зачастую служит признаком проблем с проектным решением. Сохраняйте функции простыми и короткими.
Связность: избегайте прямого изменения переменных из другого файла модуля. Тем не менее, для справки помните о том, что изменение переменных через границы файлов приводит к появлению связности между модулями подобно тому, как глобальные переменные связывают функции — модули становятся труднее понимать и многократно использовать. При любой возможности применяйте функции доступа вместо прямых операторов присваивания.

Python: задачки и вопросы

30 Dec, 17:02


Код выводит (1, [ ’ х ’ ], { ’ а ’ : ’ у ’ }) — первое присваивание в функции не оказывает влияния на вызывающий код, но остальные два оказывают, поскольку они модифицируют переданный изменяемый объект на месте.

Python: задачки и вопросы

30 Dec, 07:00


#ловушка

Python: задачки и вопросы

29 Dec, 17:02


Код выводит 1 { ’ Ь ’ : 2, ’ с ’ : 3}, т.к. 1 передается а по имени и **kargs собирает оставшиеся ключевые аргументы в словарь. Мы можем проходить по ключам словаря с добавочными ключевыми аргументами с помощью любого итерационного инструмента (скажем, for key in kargs: . . .). Обратите внимание, что порядок следования ключей в словаре может варьироваться в зависимости от версии Python и других аспектов.

Python: задачки и вопросы

29 Dec, 07:00


#размяться

Python: задачки и вопросы

28 Dec, 17:00


Код выводит 1 (2, 3), поскольку 1 передается а и *pargs собирает оставшиеся позиционные аргументы в новый объект кортежа. Мы можем проходить по кортежу с добавочными позиционными аргументами посредством любого итерационного инструмента (например, for arg in pargs: . . .).

Python: задачки и вопросы

28 Dec, 07:00


#размяться

Python: задачки и вопросы

27 Dec, 17:00


Функция foo() ищет пересечение произвольного числа последовательностей (одной и более), используя форму сопоставления с переменным количеством аргументов *аргументы для сбора всех переданных аргументов. Поскольку аргументы поступают в виде кортежа, мы можем обрабатывать произвольное число аргументов с целью сбора элементов, имеющихся во всех операндах:

def foo(*args):
res = []
for x in args[0]: # Просмотр последовательности
if x in res: continue # Пропуск дубликатов
for other in args[1:]: # Для всех остальных аргументов
if x not in other: break # Элемент находится во всех последовательностях?
else: # Нет: выйти из цикла
res.append(x) # Да: добавить в конец
return res

lst = (1, 3, 4, 3, 5)
print(foo(lst)) # [5]


В данном случае все сводится к блоку else (выходу из цикла) и добавлению последнего элемента в res.

Если подавать функции, например, два кортежа, результат будет другим:

lst = ((1, 3, 4), (3, 4, 5))
print(foo(lst)) # [(3, 4, 5)]

Python: задачки и вопросы

27 Dec, 07:00


#размяться

Python: задачки и вопросы

26 Dec, 17:01


— Сравнение строк основывается на их лексикографическом порядке, который определяется значениемUnicode каждого символа в строке ('apple' > 'banana' # False

— Сравнение чисел происходит по правилам математики (3 < 4 # True)

— А вот словари сравниваются (только оператором ==) , если у них одинаковые ключи. Операторами > < их не сравнить, получим ошибку:

TypeError: '>' not supported between instances of 'dict' and 'dict'

Python: задачки и вопросы

07 Dec, 17:01


Немного про области видимости

Имена, определяемые внутри инструкции def, не вступают в конфликт с именами, находящимися за ее пределами, даже если и там и там присутствуют одинаковые имена. Имя X, которому присвоено значение за пределами данной инструкции, полностью отлично от имени X, которому присвоено значение внутри инструкции def.

Python: задачки и вопросы

07 Dec, 07:00


#джуну

Python: задачки и вопросы

06 Dec, 10:03


Горящие таски — в сторону. Мы нашли вам занятие поинтереснее!

Tproger вместе с друзьями приготовил для вас Виммельбух. Открывайте первую главу, рассматривайте карту и узнавайте, чем живёт технологичный город в новогоднюю пору: https://tprg.ru/EUAI

А ещё на улицах города мы спрятали предметы… Сможете найти все?

Реклама, ИП Михайлишина Гузель Фаниловна, erid: LjN8K2n6W

Python: задачки и вопросы

05 Dec, 12:02


Продукт vs Разработка: кто рулит бизнесом?

Выяснить это можно, пожалуй, только в батле. И у нас есть такой! Сетка, социальная сеть для нетворкинга от hh ru, столкнет продакта и разработчика, которые будут жарко спорить, кто же на самом деле двигает бизнес вперед.

Когда: 12 декабря
Формат: онлайн-батл на несколько раундов. 

На арене встретятся:
— Олег Федоткин, СТО «Циан»
— Дима Харламов, CPO Партнерских продуктов «Яндекс.Такси»

Зачем приходить?
— Узнаете, у кого зарплата должна быть больше.
— Посмотрите на жаркую дискуссию лидов «Циана» и «Яндекса».
— Заберёте пару крутых инсайтов для своей работы.

Не забудьте зарегистрироваться и подготовиться к захватывающему файтингу! 

Зарегистрироваться
Узнать больше об онлайн-батле

Это #партнёрский пост

Python: задачки и вопросы

04 Dec, 17:01


В Python ради гибкости вызовам функций можно передавать аргументы по имени с помощью синтаксиса имя=значение и распаковывать произвольно много аргументов для отправки посредством снабжения аргументов звездочками — *args (позиционные аргументы) и **kwargs ключевые аргументы — Keyword arguments.

Пример позиционных аргументов:
def print_numbers(*args):
for number in args:
print(number)

# Вызов функции с произвольным количеством аргументов
print_numbers(1, 2, 3, 4, 5)


Пример именованных аргументов:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

# Вызов функции с произвольным количеством ключевых аргументов
print_info(name="Alice", age=30, city="New York")

Python: задачки и вопросы

01 Dec, 17:01


sorted(testDict) сгенерирует список упорядоченных ключей testDict, то есть:

sortedKeys = sorted(testDict) 
print(sortedKeys) # ['a', 'b', 'c']


Теперь для каждого элемента sortedKeys мы генерируем пару "ключ: значение по ключу из testDict")

# Для i = 0
print(sortedKeys[0], testDict['a']) # a: 2

Python: задачки и вопросы

01 Dec, 07:00


#джуну

Python: задачки и вопросы

30 Nov, 17:02


В вызовах функций можно применять специальную форму *аргумент для распаковки коллекции значений в индивидуальные аргументы. Здесь подойдет любой итерируемый объект, в том числе и файлы.

Python: задачки и вопросы

30 Nov, 07:00


#джуну

Python: задачки и вопросы

27 Nov, 17:02


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

E = enumerate(S)
E # <enumerate object at 0x02765AA8>


В контексте задачи выше c — каждая из букв 'spam', i — её индексы в строке. Первый элемент результирующего списка равен пустоте, потому что c * i = 's' * 0 ('s' повторяется 0 раз).

В дальнейшем индексы повторяют буквы p, a и m по 1, 2 и 3 раза соответственно (перемножение строки и целого числа дает повторение строки).

Python: задачки и вопросы

21 Nov, 17:01


Инструкции выражений

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

# Простое вычисление
result = 5 + 3

# Инструкция выражения (выражение, которое вычисляется, но его результат не сохраняется)
5 * 2

# Использование функции print для вывода результата
print(5 * 2) # Это уже не просто инструкция выражения, а полноценная инструкция


В качестве инструкций выражения используются обычно в двух ситуациях:

— Для вызова функций и методов: некоторые функции и методы выполняют огромный объем работы, не возвращая никакого значения. В других языках программирования такие функции иногда называют процедурами. Поскольку они не возвращают значений, которые могло бы потребоваться сохранить, вы можете вызывать эти функции в инструкциях выражений.
— Для вывода значений в интерактивной оболочке: в ходе интерактивного сеанса интерпретатор автоматически выводит результаты вводимых выражений. С технической точки зрения они также являются инструкциями выражений и играют роль сокращенной версии инструкции print.

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

>>> x = print(‘spam’) # print – это выражение вызова функции
spam
>>> print(x) # но может использоваться, как инструкция выражения
None

Python: задачки и вопросы

21 Nov, 07:00


#мидлу

Python: задачки и вопросы

20 Nov, 17:01


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

Ниже приводится список соглашений, которым было бы желательно следовать:
— Имена, начинающиеся с одного символа подчеркивания (_X), не импортируются инструкцией from module import *
— Имена, имеющие два символа подчеркивания в начале и в конце (__X__) являются системными именами, которые имеют особый смысл для интерпретатора.
— Имена, начинающиеся с двух символов подчеркивания и не оканчивающиеся двумя символами подчеркивания (__X), являются локальными («искаженными») для объемлющего класса (смотрите псевдочастные атрибуты).
Имя, состоящее из единственного символа подчеркивания (_), хранит результат последнего выражения при работе в интерактивной оболочке.

Python: задачки и вопросы

19 Nov, 17:01


Немного про именование

Синтаксис: (символ подчеркивания или алфавитный символ) + (любое число символов, цифр или символов подчеркивания)
Имена переменных должны начинаться с символа подчеркивания или с алфавитного символа, за которым может следовать произвольное число алфавитных символов, цифр или символов подчеркивания. Допустимыми именами являются: _spam, Spam_1, а 1_Spam, spam$ и @#! – недопустимыми.

Запрещено использовать зарезервированные слова
Имена определяемых вами переменных не могут совпадать с зарезервированными словами, имеющими в языке Python специальное назначение. Например, если попытаться использовать переменную с именем class, интерпретатор выведет сообщение о синтаксической ошибке, однако имена klass и Class являются вполне допустимыми. В таблице перечислены слова, которые в настоящее время зарезервированы языком Python (и, следовательно, запрещены для использования в качестве имен переменных).

Python: задачки и вопросы

19 Nov, 11:01


Python разрабатывает API, как Ferrari разгоняется до сотни — с FastAPI всё быстро, надёжно и элегантно.

Если вам нужны инструменты для создания веб-приложений, которые не тормозят, не тратят лишних ресурсов и готовы к продакшену — приходите 21 ноября в 20:00 мск на бесплатный открытый урок, где вы выясните, как FastAPI переворачивает мир разработки API. Узнаете всё: от маршрутизации до работы с базами данных и асинхронного программирования. Кроме того будет туториал, как создать простое API буквально за пару минут.

Спикер Валентин Шилин — старший программист с опытом более 15 лет на С++, С#, JavaScript, Python, Scala, Java; аналитик данных; эксперт в обработке больших данных с помощью Scala/Spark.

Зарегистрируйтесь прямо сейчас

Только в «Черную пятницу», скидки на курс «Python Developer. Professional» до 15%! Подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Python: задачки и вопросы

18 Nov, 07:00


#джуну

Python: задачки и вопросы

17 Nov, 07:00


#джуну

Python: задачки и вопросы

15 Nov, 07:00


#мидлу

Python: задачки и вопросы

14 Nov, 07:00


#мидлу

Python: задачки и вопросы

13 Nov, 07:00


#джуну

Python: задачки и вопросы

12 Nov, 11:01


Тестовое собеседование на Middle Python-разработчика в четверг

14 ноября (в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:

1. Савва Демиденко, ex. TechLead в Яндексе, Авито и другом русском бигтехе будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Савва будет комментировать каждый ответ респондента, чтобы подсветить, чего ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Савве

Что узнаешь на прямом эфире от ШОРТКАТ:
— Что ждут от кандидатов на Middle позиции в Python-разработке
— Какие вопросы задают на интервью и зачем
— Как подготовиться к собесу, чтобы получить оффер

Это бесплатно?
Бесплатно

Переходи в бота, чтобы получить ссылку на эфир: @shortcut_python_bot

Это #партнёрский пост

Python: задачки и вопросы

11 Nov, 17:00


Марк Лутц, «Изучаем Python»: полный список операторов

Python: задачки и вопросы

11 Nov, 16:01


Более 12,5 тысяч человек приняли участие в ИТ-чемпионате True Tech Champ

МТС провела всероссийский чемпионат по алгоритмическому и робототехническому программированию, собрав более 3,5 тысяч зрителей на финале и свыше 600 тысяч онлайн-участников. В этом году в соревнованиях приняли участие призеры российских и международных олимпиад. Чемпионат включал индивидуальный и командный зачеты, а заключительный этап прошел в формате шоу-кодинга и гонки роботов. Общий призовой фонд составил более 10 миллионов рублей, а победителями стали талантливые программисты и команды. Мероприятие также стало площадкой для лекций экспертов ИТ-индустрии и увлекательных развлекательных активностей.

Python: задачки и вопросы

11 Nov, 10:30


Открытая онлайн-встреча внутреннего Python-сообщества Selectel

Всем привет! Ребята из Selectel приоткрывают двери в свою инженерную культуру и приглашают вас присоединиться ко встречам внутренних сообществ. 

Ближайшую встречу проведут ребята из Python-сообщества с темой: «‎Неизвестные шедевры циклов и паттернов»‎.

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

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

Приходите пообщаться, поделиться своими знаниями и послушать опыт коллег. 

Встреча будет в онлайн-формате, координация в этом чатике. 

Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqupedoB

Python: задачки и вопросы

10 Nov, 07:00


#джуну

Python: задачки и вопросы

09 Nov, 13:45


Когда ваш код превращается в беспорядочную паутину условных операторов, а архитектура разваливается, пора звать на помощь паттерны проектирования. 

13 ноября в 20:00 мск приходите на бесплатный открытый урок, где вы узнаете, как шаблоны проектирования из мира Java и C++ оживают в Python. Разберётесь, какие паттерны подходят для ваших задач и почему они так важны для структурирования кода.

Это не очередная водянистая теория — это навыки, которые вы сможете использовать на практике сразу после урока. 

Участники получат скидку на полный курс обучения «Python Developer. Professional».

Не упустите шанс сделать ваш Python-код чистым и структурированным! Зарегистрируйтесь прямо сейчас.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, erid: LjN8K5LVH

Python: задачки и вопросы

09 Nov, 07:00


#джуну

Python: задачки и вопросы

08 Nov, 07:00


#джуну

Python: задачки и вопросы

07 Nov, 17:00


Марк Лутц, «Изучаем Python»

Python: задачки и вопросы

06 Nov, 07:00


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

Python: задачки и вопросы

05 Nov, 07:00


#джуну

Python: задачки и вопросы

04 Nov, 17:00


Марк Лутц, «Изучаем Python»:
- Операция == проверяет эквивалентность значений. Python проверяет проверку эквивалентности значенй, рекурсивно сравнивая все вложенные объекты.
- Операция is проверяет идентичность объектов. Python проверяет, являются ли два объекта на самом деле одним и тем же объектом (т.е. располагаются по тому же адресу в памяти).

Python: задачки и вопросы

04 Nov, 07:00


#мидлу

Python: задачки и вопросы

02 Nov, 13:02


Хотите узнать, как работает протокол gRPC, в чём его преимущества и недостатки?

Обычно клиент-серверное взаимодействие строится на основе протокола HTTP/1.1, а общение между микросервисами – на основе брокеров сообщений. 

На открытом уроке «gRPC в Python»: 
– узнаете о gRPC – протоколе на основе HTTP/2 и Google Protobuf,
– посмотрите на реализацию клиента и сервера,
– увидите плюсы и минусы протокола gRPC.

Занятие будет полезно разработчикам, которым важно понять, как работает gRPС.

Вебинар проведёт Сурен Хоренян — бэкенд-разработчик и руководитель команды в ВК Рекламе.

Когда: 7 ноября в 20:00
Где: онлайн
Как: Бесплатно

Записаться на вебинар

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Python: задачки и вопросы

02 Nov, 09:02


Все Telegram-каналы от Tproger теперь собраны в одном месте: @tproger_channels

Каналы по конкретным направлениям разработки, подборки полезных ресурсов, канал для начинающих, новости, мемы — всего около двух десятков каналов разного формата. Точно найдёте что-нибудь для себя.

Python: задачки и вопросы

02 Nov, 07:10


#джуну

Python: задачки и вопросы

01 Nov, 17:00


Марк Лутц, «Изучаем Python»: D.keys() создает т.н. объект представления, который является итерируемым, т.е. генериреут результирующие элементы по одному за раз, а не производят сразу весь результирующий список за раз. Изменение в виде D.pop('a') тем самым отражается в текущем объекте K.

Python: задачки и вопросы

01 Nov, 07:00


#джуну

Python: задачки и вопросы

29 Oct, 07:00


#джуну

Python: задачки и вопросы

28 Oct, 07:00


#джуну

Python: задачки и вопросы

27 Oct, 07:01


По каким темам вы бы хотели получать задачи / тесты? Поделитесь в комментариях.

Python: задачки и вопросы

26 Oct, 17:00


Марк Лутц, «Изучаем Python»: в данном примере число 4 является аргументом format() и указывает на число знаков после запятой. В качестве значения, которое предстоит форматировать, используется частное 1 / 3.0 (то есть 0.(3) — число в периоде).

Python: задачки и вопросы

26 Oct, 07:00


#мидлу

Python: задачки и вопросы

25 Oct, 17:00


docs.python.org:

If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace. Consequently, splitting an empty string or a string consisting of just whitespace with a None separator returns .

«Если sep (разделитель) не указан или равен None, применяется другой алгоритм разбиения: серии последовательных пробелов рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет начальные или конечные пробелы. Следовательно, разбиение пустой строки или строки, состоящей только из пробелов, с разделителем None возвращает []».

Начиная с Python 3.x, в качестве разделителей также принимаются табуляция (\t) и разрыв строки (\n).

Python: задачки и вопросы

25 Oct, 07:00


#мидлу

Python: задачки и вопросы

24 Oct, 07:00


#джуну

Python: задачки и вопросы

23 Oct, 11:01


Станьте Python-разработчиком за 9 месяцев с курсом Яндекс Практикума

В программе — 13 проектов для портфолио, включая веб-приложения и телеграм-ботов, а также лайвкодинг и хакатоны. Ваши наставники — опытные разработчики из Яндекса, которые помогут вам освоить тонкости бэкенд-разработки. Ближайшие старты — 31 октября и 14 ноября.

Вы можете получить скидку 20%, если пройдете первую учебную тему курса до 30 ноября. 

Зарегистрироваться

Это #партнёрский пост

Python: задачки и вопросы

23 Oct, 07:00


Что выведет код? #джуну

Python: задачки и вопросы

22 Oct, 17:00


Марк Лутц, «Изучаем Python»: Основы нарезания прямолинейны. Когда вы индексируете объект последовательности вроде строки с указанием пары смещений, разделенных двоеточием, Python возвращает новый объект, который содержит непрерывный сегмент, идентифицируемый парой смещений. Левое смещение считается нижней границей (включающей), а правое — верхней границей (исключающей). То есть Python извлекает элементы, начиная с нижней граница и заканчивая, но не включая верхнюю границу, и возвращает новый объект, содержащий извлеченные элементы. Если левая и правая границы не указаны, тогда по умолчанию для них принимается 0 и длина нарезаемого объекта соответственно.

То есть для массива будут выбраны:
- слева: элемент с индексом 1 — число 2 (помним про индексацию с нуля)
- справа: элемент с индексом 3 НЕВКЛЮЧИТЕЛЬНО (то есть остается число 3)

Python: задачки и вопросы

22 Oct, 07:00


#джуну

Python: задачки и вопросы

21 Oct, 17:00


Марк Лутц, «Изучаем Python»: на самом деле мы здесь не модифицировали сам список L1, а изменили компонент объекта, на который L1 ссылается. Изменение такого рода перезаписывает часть значения спискового объекта на месте. Однако поскольку списковый объект совместно используется другой переменной (она ссылается на него), изменение на месте подобного вида оказывает влияние не только на L1. ... В приведенном примере эффект модификации отражается и в списке L2, т.к. он ссылается на тот же самый объект, что и L1. В действительности мы не изменяли список L2, но его значение стало другим, потому что он ссылается на объект, который был перезаписан на месте.

Python: задачки и вопросы

21 Oct, 07:00


#джуну

Python: задачки и вопросы

20 Oct, 07:00


#джуну

Python: задачки и вопросы

20 Oct, 07:00


Марк Лутц, «Изучаем Python»: положительные смещения начинаются с левого края (смещение 0 дает первый элемент), а отрицательные — с правого края (смещение -1 дает последний элемент). Однако нельзя, чтобы индекс начального элемента среза был отрицательным, а конечного — положительным («смыкать» начало и конец строки Python не станет).

Python: задачки и вопросы

19 Oct, 07:00


#джуну

Python: задачки и вопросы

18 Oct, 11:01


Систематизируйте и углубите знания бэкенд-разработки на Python на курсе Яндекс Практикума за 6 месяцев

Преимущества курса:

— актуальная программа, которая постоянно обновляется;
— много практики, лайвкодинг и хакатон;
— возможность совмещать с другой учёбой или работой;
— наставники из Яндекса и не только;
— помощь с трудоустройством.

Погружайтесь в Python, нарабатывайте нужные навыки и осваивайте инструменты для работы. Начните курс бесплатно, а если понравится, платите как удобно: в рассрочку или целиком.

Начать бесплатно

Это #партнёрский пост

Python: задачки и вопросы

18 Oct, 07:00


#джуну

Python: задачки и вопросы

17 Oct, 09:02


Бесплатный мини-курс по Python: избавляемся от голосовух в Telegram

Вы научитесь создавать Telegram-бота, который переводит голос в текст, а затем научите его обрабатывать фотографии и парсить сайты. 

Стек: Telegram API, Flask. 

Присоединяйтесь к Анастасии Борневой, специалисту из Сбера с 9+ лет опыта. Участникам подарки!

Зарегистрироваться

Это #партнёрский пост

Python: задачки и вопросы

17 Oct, 07:00


#джуну

Python: задачки и вопросы

16 Oct, 07:00


М и L ссылаются на разные объекты, хоть у них и одинаковые значения.

Python: задачки и вопросы

16 Oct, 07:00


#мидлу

Python: задачки и вопросы

15 Oct, 17:00


Марк Лутц, «Изучаем Python»: У объекта 3 есть так называемый счетчик ссылок, равный двум в начале третьей строки (переменные a и b ссылаются на 3). Переменная b остается ссылкой на объект 3 после переприсвоения a.

Python: задачки и вопросы

15 Oct, 07:00


#джуну

Python: задачки и вопросы

14 Oct, 07:00


#мидлу

Python: задачки и вопросы

13 Oct, 07:00


#джуну

Python: задачки и вопросы

12 Oct, 07:00


#мидлу