Python собеседования
1.94K subscribers
340 photos
453 links
Подготовка к собеседованиям на позицию Python-разработчик

Еще больше на сайте https://frontview-it.ru

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🔥 Что такое модуль math и какие функции он предоставляет?

Модуль math в Python предоставляет базовые математические функции для выполнения операций с числами с плавающей точкой.

Примеры основных функций:

- math.sqrt(x) — вычисляет квадратный корень из x.
- math.pow(x, y) — возводит x в степень y.
- math.sin(x) и math.cos(x) — вычисляют синус и косинус угла x в радианах.
- math.log(x, base) — вычисляет логарифм числа x по основанию base. Если основание не указано, используется натуральный логарифм.
- math.floor(x) и math.ceil(x) — округляют число x вниз и вверх до ближайшего целого соответственно.

Пример использования:


import math

# Вычисление квадратного корня
result = math.sqrt(9)
print(result) # Вывод: 3.0

# Возведение в степень
result = math.pow(2, 5)
print(result) # Вывод: 32.0

# Вычисление синуса угла в радианах
angle = math.pi / 6 # 30 градусов
result = math.sin(angle)
print(result) # Вывод: 0.5

# Вычисление натурального логарифма
result = math.log(10)
print(result) # Вывод: 2.302585092994046

# Округление числа вниз и вверх
result_floor = math.floor(3.7)
result_ceil = math.ceil(3.3)
print(result_floor) # Вывод: 3
print(result_ceil) # Вывод: 4


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122
🔥 Как использовать логические операторы and, or и not?

Логические операторы and, or и not используются в Python для объединения булевых выражений и управления потоком выполнения кода.

Оператор and

Возвращает True, если оба выражения истинны:


x = 5
if x > 0 and x < 10:
# Если x больше 0 и меньше 10
print("x находится между 0 и 10")


Оператор or

Возвращает True, если хотя бы одно из выражений истинно:


x = -3
if x < 0 or x > 10:
# Если x меньше 0 или больше 10
print("x вне диапазона 0-10")


Оператор not

Инвертирует булево значение:


is_valid = False
if not is_valid:
# Если is_valid не истина
print("Данные недействительны")


Логические операторы полезны для создания сложных условий в управляющих конструкциях, таких как if, while и for. Они делают код более гибким и читаемым.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🔥 Как создать и использовать целочисленный тип (int)?

В Python создание целочисленного типа int осуществляется простым присвоением целого числа переменной:


number = 10 # Создаем переменную number со значением 10


Целые числа поддерживают основные арифметические операции:


addition = 5 + 3 # Сложение: addition будет 8
subtraction = 5 - 3 # Вычитание: subtraction будет 2
multiplication = 5 * 3 # Умножение: multiplication будет 15
division = 5 // 3 # Целочисленное деление: division будет 1
remainder = 5 % 3 # Остаток от деления: remainder будет 2


Для преобразования других типов данных в целое число используется функция int():


float_number = 7.8
int_number = int(float_number) # Преобразуем 7.8 в 7

string_number = "42"
int_from_string = int(string_number) # Преобразуем строку "42" в число 42


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

Проверить тип переменной можно с помощью функции type():


print(type(number)) # Выведет: <class 'int'>


Целые числа в Python могут быть произвольно большой величины, ограниченной только объемом доступной памяти.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4
Python собеседования pinned «Подписывайся на наши новые каналы! 👩‍💻 Git 🖥 SQL 👩‍💻 QA»
🔥 Как использовать блок else в обработке исключений?

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


try:
# Попытка разделить два числа
result = numerator / denominator
except ZeroDivisionError:
# Обработка ошибки деления на ноль
print("Ошибка: Деление на ноль.")
else:
# Выполняется, если исключения не было
print("Результат:", result)


В этом примере, если переменная denominator не равна нулю, деление пройдет успешно, и блок else выведет результат. Если же произойдет исключение ZeroDivisionError, блок else будет пропущен.

Еще пример использования:


try:
# Чтение из файла
with open('data.txt', 'r') as file:
data = file.read()
except FileNotFoundError:
# Обработка ошибки отсутствия файла
print("Файл не найден.")
else:
# Выполняется, если файл успешно открыт
process_data(data) # Обработка данных из файла


Блок else подходит для кода, который должен выполняться только при отсутствии ошибок в блоке try, делая программу более читабельной и структурированной.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3
🔥 Как добавлять методы в класс?

В Python методы добавляются в класс путем определения функций внутри него. Методы экземпляра принимают первым аргументом self, ссылающимся на объект.


class MyClass:
def my_method(self):
# Метод экземпляра
print("Hello from instance method")


Создание объекта и вызов метода:


obj = MyClass() # Создаем объект класса
obj.my_method() # Вызываем метод экземпляра


Добавление метода с параметрами:


class MyClass:
def greet(self, name):
# Метод с параметром
print(f"Hello, {name}!")


Статические и класс-методы создаются с помощью декораторов @staticmethod и @classmethod:


class MyClass:
@staticmethod
def static_method():
# Статический метод без self
print("Это статический метод")

@classmethod
def class_method(cls):
# Класс-метод принимает cls вместо self
print(f"Это метод класса {cls}")


Вызов статического и класс-методов:


MyClass.static_method() # Вызов статического метода
MyClass.class_method() # Вызов класс-метода


Методы определяют поведение объектов и класса, позволяя взаимодействовать с данными и выполнять операции.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👀1
🔥 Как импортировать конкретные функции или классы из модуля?

В Python для импорта конкретных функций или классов из модуля используется конструкция from ... import ....

Например, импортируем функцию sqrt из модуля math:


from math import sqrt # Импортируем функцию sqrt из модуля math

result = sqrt(25) # Используем функцию sqrt для вычисления квадратного корня из 25
print(result) # Выведет: 5.0


Импорт нескольких функций одновременно:


from math import sin, cos, pi # Импортируем функции sin, cos и константу pi

print(sin(pi/2)) # Выведет: 1.0
print(cos(0)) # Выведет: 1.0


Импорт класса из модуля:


from collections import Counter # Импортируем класс Counter из модуля collections

data = ['a', 'b', 'a', 'c', 'b', 'a']
counter = Counter(data) # Создаем объект Counter для подсчета элементов в data
print(counter) # Выведет: Counter({'a': 3, 'b': 2, 'c': 1})


Переименование импортируемых элементов с помощью as:


from datetime import datetime as dt # Импортируем класс datetime как dt

now = dt.now() # Создаем объект текущего времени
print(now)


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤩2
👇 Другие направления для подготовки тут:

👩‍💻 Frontend
👩‍💻 Go
👩‍💻 Java
👩‍💻 C/C++
👩‍💻 C#
👩‍💻 PHP
👩‍💻 QA
🖥 SQL
👩‍💻 Git
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🔥 Как работать с регулярными выражениями с помощью модуля re?

В Python модуль re используется для работы с регулярными выражениями: поиска, сопоставления и замены в строках.

Импорт модуля:


import re # Импортируем модуль re


Поиск совпадения с re.search():


text = "Contact us at support@example.com"
match = re.search(r'\w+@\w+\.\w+', text) # Ищем email в тексте
if match:
print(match.group()) # Выведет: support@example.com


Получение всех совпадений с re.findall():


numbers = re.findall(r'\d+', "Prices: 100, 200, 300") # Ищем все числа
print(numbers) # Выведет: ['100', '200', '300']


Замена подстрок с re.sub():


text = "Red car, blue car, green car"
new_text = re.sub(r'car', 'bike', text) # Заменяем 'car' на 'bike'
print(new_text) # Выведет: "Red bike, blue bike, green bike"


Разделение строки с re.split():


items = re.split(r',\s*', "apple, banana, cherry") # Разделяем по запятой
print(items) # Выведет: ['apple', 'banana', 'cherry']


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍811
🔥 Что такое декораторы с аргументами?

В Python декораторы с аргументами — это функции, которые принимают аргументы и возвращают сам декоратор. Это позволяет передавать дополнительные параметры для настройки поведения декоратора.

Пример декоратора с аргументами для повторения выполнения функции:


def repeat(times):
# Декоратор, принимающий аргумент times
def decorator(func):
# Декоратор без аргументов
def wrapper(*args, **kwargs):
# Обертка функции
result = None
for _ in range(times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator


Использование декоратора с аргументами:


@repeat(3)
def greet(name):
# Функция, которую декорируем
print(f"Hello, {name}!")

greet("Alice")


В этом примере декоратор @repeat(3) вызывает функцию greet три раза подряд. Аргумент times позволяет задавать количество повторений при применении декоратора.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🔥1
🔥 Как использовать библиотеку sqlite3 для работы с базой данных?

В Python библиотека sqlite3 используется для работы с базой данных SQLite. С ее помощью можно создавать, изменять и читать базы данных, хранящиеся в файловой системе.

Создание подключения и курсора:


import sqlite3 # Импортируем модуль sqlite3

# Подключаемся к базе данных (файл example.db)
conn = sqlite3.connect('example.db')
cursor = conn.cursor() # Создаем курсор для выполнения операций


Создание таблицы:


# Создаем таблицу users с полями id и name
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
)
''')
conn.commit() # Сохраняем изменения


Вставка данных:


# Вставляем новую запись в таблицу
cursor.execute('INSERT INTO users (name) VALUES (?)', ('Alice',))
conn.commit()


Получение данных:


# Извлекаем все записи из таблицы
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall() # Получаем результат запроса
for row in rows:
print(row) # Выводим каждую запись


Обновление данных:


# Обновляем имя пользователя с id = 1
cursor.execute('UPDATE users SET name = ? WHERE id = ?', ('Bob', 1))
conn.commit()


Удаление данных:


# Удаляем пользователя с id = 1
cursor.execute('DELETE FROM users WHERE id = ?', (1,))
conn.commit()


Закрытие подключения:


# Закрываем курсор и соединение
cursor.close()
conn.close()


Библиотека sqlite3 позволяет выполнять стандартные SQL-запросы, обеспечивая простой и эффективный способ взаимодействия с базами данных SQLite.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
🔥 Как работать с типом данных float?

В Python тип данных float представляет числа с плавающей точкой, то есть дробные числа.

Создание переменной типа float:


number = 3.14 # Создаем переменную number со значением 3.14


Арифметические операции с числами float:


addition = 1.5 + 2.5 # Сложение: addition будет 4.0
subtraction = 5.0 - 0.5 # Вычитание: subtraction будет 4.5
multiplication = 2.0 * 3.0 # Умножение: multiplication будет 6.0
division = 7.0 / 2.0 # Деление: division будет 3.5


Преобразование других типов данных в float с помощью функции float():


int_number = 10
float_number = float(int_number) # Преобразуем 10 в 10.0

string_number = "2.718"
float_from_string = float(string_number) # Преобразуем строку "2.718" в число 2.718


Форматирование вывода чисел float:


value = 1 / 3
print(f"{value:.2f}") # Выведет: 0.33 (до двух знаков после запятой)


Особенности работы с float из-за ограниченной точности:


sum = 0.1 + 0.2
print(sum) # Выведет: 0.30000000000000004

# Для точных вычислений используйте модуль decimal
from decimal import Decimal
sum_decimal = Decimal('0.1') + Decimal('0.2')
print(sum_decimal) # Выведет: 0.3


Проверка типа переменной:


print(type(number)) # Выведет: <class 'float'>


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1032🤩1
🔥 Как устроен цикл for в Python?

В Python цикл for используется для итерации по итерируемым объектам, таким как списки, строки, кортежи, множества и словари.

Пример перебора списка:


fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit) # Выводим каждый фрукт из списка


Итерация по строке:


for char in 'Python':
print(char) # Выводим каждый символ строки


Использование функции range() для генерации последовательности чисел:


for i in range(5):
print(i) # Выводим числа от 0 до 4


С указанием начального значения и шага:


for i in range(1, 10, 2):
print(i) # Выводим числа 1, 3, 5, 7, 9


Перебор элементов словаря:


person = {'name': 'Alice', 'age': 30}
for key, value in person.items():
print(f"{key}: {value}") # Выводим ключ и значение


Вложенные циклы for:


for i in range(3):
for j in range(2):
print(f"i = {i}, j = {j}") # Комбинации i и j


Цикл for может содержать инструкции break и continue для управления потоком выполнения:


for i in range(10):
if i == 5:
break # Прерываем цикл при i равном 5
print(i)

for i in range(10):
if i % 2 == 0:
continue # Пропускаем четные числа
print(i)


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
🔥 Как создавать собственные исключения в Python?

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


class MyCustomError(Exception):
# Пользовательское исключение, наследующее от Exception
pass


Это создает простое исключение MyCustomError, которое можно вызвать с помощью raise:


def divide(a, b):
if b == 0:
raise MyCustomError("Деление на ноль недопустимо.")
return a / b

try:
result = divide(10, 0)
except MyCustomError as e:
print(e) # Выведет сообщение об ошибке


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


class ValidationError(Exception):
def __init__(self, message, field):
# Инициализируем базовый класс Exception
super().__init__(message)
self.field = field # Дополнительный атрибут

try:
raise ValidationError("Неверное значение.", "username")
except ValidationError as e:
print(f"{e.field}: {e}") # Выведет: username: Неверное значение.


Создание собственных исключений помогает делать код более понятным и предоставляет дополнительные возможности для обработки ошибок.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤩1
🔥 Как читать содержимое файла построчно?

В Python для чтения файла построчно используются различные методы.

Использование цикла for по объекту файла:


with open('filename.txt', 'r') as file:
for line in file:
print(line.strip()) # Выводим строку без лишних пробелов и переносов


В этом примере файл открывается с помощью with open, что обеспечивает автоматическое закрытие файла после завершения блока. Цикл for перебирает каждую строку в файле.

Чтение строк с помощью readline():


with open('filename.txt', 'r') as file:
line = file.readline() # Читаем первую строку
while line:
print(line.strip()) # Обрабатываем строку
line = file.readline() # Читаем следующую строку


Метод readline() читает файл по одной строке за вызов. Цикл while продолжается до тех пор, пока не будет прочитан весь файл.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🔥 Что такое атрибуты класса и экземпляра?

В Python атрибуты класса являются общими для всех экземпляров, а атрибуты экземпляра уникальны для каждого объекта.

Атрибуты класса:


class MyClass:
class_attr = 0 # Атрибут класса

print(MyClass.class_attr) # Выведет: 0

obj1 = MyClass()
obj2 = MyClass()
print(obj1.class_attr) # Выведет: 0

MyClass.class_attr = 10 # Изменяем атрибут класса
print(obj1.class_attr) # Выведет: 10
print(obj2.class_attr) # Выведет: 10


Атрибуты экземпляра:


class MyClass:
def __init__(self, value):
self.instance_attr = value # Атрибут экземпляра

obj1 = MyClass(1)
obj2 = MyClass(2)
print(obj1.instance_attr) # Выведет: 1
print(obj2.instance_attr) # Выведет: 2

obj1.instance_attr = 3 # Изменяем атрибут экземпляра
print(obj1.instance_attr) # Выведет: 3
print(obj2.instance_attr) # Выведет: 2


Атрибуты класса подходят для данных, общих для всех объектов, а атрибуты экземпляра — для индивидуальных данных каждого объекта.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151
🔥 Как использовать генераторы для создания итераторов?

В Python генераторы — это простой и эффективный способ создавать итераторы с помощью функций и ключевого слова yield.

Пример генератора:


def my_generator(n):
# Генерируем числа от 0 до n-1
for i in range(n):
yield i


Использование генератора:


gen = my_generator(5)
for value in gen:
print(value) # Выведет числа от 0 до 4


При каждом вызове yield функция приостанавливается и сохраняет свое состояние. При следующей итерации выполнение продолжается с того же места.

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

Также существуют генераторные выражения, аналогичные списковым включениям:


gen_exp = (x * x for x in range(5))
for value in gen_exp:
print(value) # Выведет квадраты чисел от 0 до 4


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
🔥 Как работать с библиотекой asyncio?

В Python библиотека asyncio используется для написания асинхронного кода, позволяющего выполнять операции ввода-вывода без блокировки.

Создание корутины:


import asyncio # Импортируем модуль asyncio

async def main():
# Асинхронная функция
print('Hello')
await asyncio.sleep(1) # Асинхронная задержка на 1 секунду
print('World')

asyncio.run(main()) # Запускаем корутину


Выполнение нескольких задач одновременно:


async def say_after(delay, what):
await asyncio.sleep(delay) # Задержка
print(what)

async def main():
task1 = asyncio.create_task(say_after(1, 'Hello'))
task2 = asyncio.create_task(say_after(2, 'World'))

await task1 # Ждем завершения task1
await task2 # Ждем завершения task2

asyncio.run(main())


Использование asyncio.gather:


async def main():
await asyncio.gather(
say_after(1, 'Hello'),
say_after(2, 'World'),
)

asyncio.run(main())


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🔥 Что такое строковые литералы и как их использовать?

Строковые литералы в Python используются для представления текста. Они могут быть заключены в одинарные ' ', двойные " " или тройные кавычки ''' '''/""" """. Тройные кавычки позволяют создавать многострочные строки.

Основные виды строковых литералов:

- Одинарные и двойные кавычки: позволяют использовать разные типы кавычек внутри строки без экранирования.


single_quote = 'Hello, World!'
double_quote = "Hello, World!"


- Тройные кавычки: удобны для многострочного текста и документации.


multi_line = """Hello,
World!"""


- Сырые строки: обозначаются префиксом r и игнорируют экранирование символов.


raw_string = r"C:\Users\Name"


Строковые литералы поддерживают различные методы для обработки текста, такие как upper(), lower(), format() и другие, что делает их гибким инструментом для работы с текстовыми данными.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
🔥 Что такое цепочка исключений и как её использовать?

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

Основной способ создания цепочки исключений — использование ключевого слова from. Это связывает новое исключение с исходным, показывая их взаимосвязь.

Пример использования:


def read_file(file_path):
try:
with open(file_path, 'r') as file:
return file.read()
except FileNotFoundError as e:
raise FileNotFoundError(f"Файл по пути {file_path} не найден") from e

try:
content = read_file("non_existent_file.txt")
except FileNotFoundError as err:
print(err)
print("Исходная ошибка:", err.__cause__)


Вывод:

Файл по пути non_existent_file.txt не найден
Исходная ошибка: [Errno 2] No such file or directory: 'non_existent_file.txt'


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14