class Developer:
    coffee_cups = 0
    def __init__(self, name):
        self.name = name
        self.coffee_cups += 1
    def speak(self):
        print(f"I'm {self.name} and I've had {self.coffee_cups} cups 
              of coffee today")
rover = Developer("Steve")
spot = Developer("Bob")👉 Пишите ваше решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥7👍5❤1
  🔥  Подборка каналов для Дата сайентиста
⭐️  Нейронные сети
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.
🖥  Machine learning
@ai_ml – погружение в нейросети, ai, Chatgpt, midjourney, машинное обучение.
@datasc - дата сайнс обучение самой востребованной профессии.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседованию.
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
@Machinelearning_Jobs - чат работы мл
🖥  SQL базы данных
@sqlhub - Повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
🖥  Python
@pythonl - главный канал самого популярного языка программирования.
@pro_python_code – учим python с ментором.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий
🖥  Javascript / front 
@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.
 
🖥  Java
@javatg - выучить Java с senior разработчиком по профессиональной методике.
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
👣  Golang
@Golang_google - восхитительный язык от Google, мощный и перспективный.
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go
 🖥  Linux
@linux -топ фишки, гайды, уроки по работе с Linux.
@linux chat - чат linux для обучения и помощи.
@linux_read - бесплатные книги linux
👷♂️ IT работа
@hr_itwork -кураторский список актуальных ит-ваканнсии
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust
#️⃣ c# c++
C# - объединяет лучшие идеи современных языков программирования
@csharp_cplus чат
С++ - Универсальность. Возможно, этот главный плюс C++.
📓 Книги
@programming_books_it - большая библиотека. программиста
@datascienceiot -ds книги
@pythonlbooks - python библиотека.
@golang_books - книги Golang
@frontendbooksit - front книги
@progersit - ит-шпаргалки
@linux_read - Linux books
@java_library - Java books
🖥  Github 
@github_code - лучшие проекты с github
@bigdatai - инструменты по работе с данными
🖥  Devops 
Devops - специалист общего профиля, которому нужны обширные знания в области разработки.
📢  English for coders
@english_forprogrammers - Английский для программистов
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.
@ai_ml – погружение в нейросети, ai, Chatgpt, midjourney, машинное обучение.
@datasc - дата сайнс обучение самой востребованной профессии.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседованию.
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
@Machinelearning_Jobs - чат работы мл
@sqlhub - Повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
@pythonl - главный канал самого популярного языка программирования.
@pro_python_code – учим python с ментором.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий
@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.
@javatg - выучить Java с senior разработчиком по профессиональной методике.
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
@Golang_google - восхитительный язык от Google, мощный и перспективный.
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go
@linux -топ фишки, гайды, уроки по работе с Linux.
@linux chat - чат linux для обучения и помощи.
@linux_read - бесплатные книги linux
👷♂️ IT работа
@hr_itwork -кураторский список актуальных ит-ваканнсии
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust
#️⃣ c# c++
C# - объединяет лучшие идеи современных языков программирования
@csharp_cplus чат
С++ - Универсальность. Возможно, этот главный плюс C++.
📓 Книги
@programming_books_it - большая библиотека. программиста
@datascienceiot -ds книги
@pythonlbooks - python библиотека.
@golang_books - книги Golang
@frontendbooksit - front книги
@progersit - ит-шпаргалки
@linux_read - Linux books
@java_library - Java books
@github_code - лучшие проекты с github
@bigdatai - инструменты по работе с данными
Devops - специалист общего профиля, которому нужны обширные знания в области разработки.
@english_forprogrammers - Английский для программистов
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍4🔥4❤2
  📌 Задача
У вас есть девять цифр:
Три функции:
-
-
Здесь просится решение, избавленное от if-ов и кодирования операций с помощью символов.
👉 Это не оптимальное решение. Пишите свое решение в комментариях👇
@python_job_interview
У вас есть девять цифр:
 1, 2, …, 9. Именно в таком порядке. Вы можете вставлять между ними знаки «+», «-» или ничего. У вас будут получаться выражения вида 123+45-6+7+89. Найдите все из них, которые равны 100.def all_combinations(a):
    if len(a) <= 1:
        yield a
    else:
        head = ''
        tail = list(a)
        while len(tail) > 0:
            head += tail.pop(0)
            for s in all_combinations(tail):
                yield [head] + s
def all_signs(n):
    if n == 0:
        yield ()
    else:
        for tail in all_signs(n-1):
            for s in '+-':
                yield (s,) + tail
def perform_operations(nums, signs):
    nums = list(map(int, nums))
    result = nums.pop(0)
    n = 1
    for s in signs:
        if s == '+':
            result += nums.pop(0)
        if s == '-':
            result -= nums.pop(0)
        n += 1
    return result
for numbers in all_combinations(tuple(map(str, range(1, 10)))):
    #print(numbers)
    for signs in all_signs(len(numbers) - 1):
        #print(signs)
        summ = perform_operations(numbers, signs)
        if summ == 100:
            print(
                ''.join(map(
                    lambda x: ''.join(x),
                    zip(numbers, signs)))
                + numbers[-1])
Три функции:
-
all_combinations — итератор, который выдает все числа для операций (в терминах задачи: вставляет пустые места); -
all_signs — выдаёт все возможные сочетания знаков + и - заданной длинны (для единообразия, это тоже итератор с рекурсией); - perform_operations — выполняет операции.Здесь просится решение, избавленное от if-ов и кодирования операций с помощью символов.
👉 Это не оптимальное решение. Пишите свое решение в комментариях👇
@python_job_interview
🔥8👍3👏2❤1
  📌 Тестовое задание по python
Мы уже создавали матрицу спирали, теперь создадим полноценный проект.
Необходимо реализовать Python-библиотеку, которая осуществляет получение квадратной матрицы (NxN) с удалённого сервера и возвращает её пользователю в виде List[int]. Этот список должен содержать результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла (см. test case ниже).
Пример исходной матрицы:
Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается.
Требования к выполнению и оформлению
Библиотека содержит функцию со следующим интерфейсом:
...
Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S).
Функция возвращает список, содержащий результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла.
Взаимодействие с сервером должно быть реализовано асинхронно - посредством aiohttp, httpx или другого компонента на asyncio.
Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused, ...).
В дальнейшем размерность матрицы может быть изменена с сохранением форматирования. Библиотека должна сохранить свою работоспособность на квадратных матрицах другой размерности.
Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket). Можно также выслать решение в виде архива (zip, tar). Загружать библиотеку в PyPi или другие репозитории не требуется.
Проверка решения
Для самостоятельной проверки можно использовать следующий test case:
Загружайте свои решения и отправляйте ссылки в комментарии👇
@python_job_interview
Мы уже создавали матрицу спирали, теперь создадим полноценный проект.
Необходимо реализовать Python-библиотеку, которая осуществляет получение квадратной матрицы (NxN) с удалённого сервера и возвращает её пользователю в виде List[int]. Этот список должен содержать результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла (см. test case ниже).
Пример исходной матрицы:
+-----+-----+-----+-----+
|  10 |  20 |  30 |  40 |
+-----+-----+-----+-----+
|  50 |  60 |  70 |  80 |
+-----+-----+-----+-----+
|  90 | 100 | 110 | 120 |
+-----+-----+-----+-----+
| 130 | 140 | 150 | 160 |
+-----+-----+-----+-----+Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается.
Требования к выполнению и оформлению
Библиотека содержит функцию со следующим интерфейсом:
async def get_matrix(url: str) -> List[int]:...
Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S).
Функция возвращает список, содержащий результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла.
Взаимодействие с сервером должно быть реализовано асинхронно - посредством aiohttp, httpx или другого компонента на asyncio.
Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused, ...).
В дальнейшем размерность матрицы может быть изменена с сохранением форматирования. Библиотека должна сохранить свою работоспособность на квадратных матрицах другой размерности.
Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket). Можно также выслать решение в виде архива (zip, tar). Загружать библиотеку в PyPi или другие репозитории не требуется.
Проверка решения
Для самостоятельной проверки можно использовать следующий test case:
SOURCE_URL = 'https://raw.githubusercontent.com/avito-tech/python-trainee-assignment/main/matrix.txt'TRAVERSAL = [
    10, 50, 90, 130,
    140, 150, 160, 120,
    80, 40, 30, 20,
    60, 100, 110, 70,
]def test_get_matrix():
    assert asyncio.run(get_matrix(SOURCE_URL)) == TRAVERSALЗагружайте свои решения и отправляйте ссылки в комментарии👇
@python_job_interview
👍10🔥3❤1
  Каким будет результат выполнения кода?
  Anonymous Quiz
    24%
    True a
      
    3%
    a True
      
    7%
    a
      
    14%
    True
      
    18%
    True True
      
    3%
    None
      
    14%
    Error
      
    18%
    Узнать ответ
      
    👏2👍1
  📌 Дана последовательность, в которой находятся рандомные числа в произвольном порядке, в ней находятся только парные элементы.
 
Пример: 2 1 5 5 2 1
К ним добавляют элемент в произольное место
Например: 2 3 1 5 5 2 1
Найти этот уникальный элемент используя только один цикл
=========================================
(сложность программ - линейная)
Это громоздкое решение. Пишите свое решение в комментариях👇
@python_job_interview
Пример: 2 1 5 5 2 1
К ним добавляют элемент в произольное место
Например: 2 3 1 5 5 2 1
Найти этот уникальный элемент используя только один цикл
=========================================
(сложность программ - линейная)
import random
import numpy as np
def merge(lst1, lst2):
    yield from lst1
    yield from lst2
def shuffle_list(n: int):
    lst = np.arange(1, n)
    np.random.shuffle(lst)
    return lst
def random_insert(lst, item):
    lst.insert(random.randrange(len(lst)+1), int(item))
def find_item(lst: list):
    init_lst  = []
    for item in lst:
        if lst.count(item) == 1:
            init_lst.append(item)
    return init_lst
n = int(input("n > "))
a_list = shuffle_list(n)
b_list = shuffle_list(n)
c_list = list(merge(a_list, b_list))
e = input("e > ")
random_insert(c_list, e)
print(find_item(c_list))Это громоздкое решение. Пишите свое решение в комментариях👇
@python_job_interview
👍5❤1🔥1
  Ответ
s = 'To be, or not to be, that is the question!'
new_s = ''
eng_lower_alphabet = 'abcdefghijklmnopqrstuvwxyz'
eng_upper_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in range(len(s)):
    if s[i].isupper():
        ind = eng_upper_alphabet.find(s[i])
        while not ind + 17 < len(eng_upper_alphabet):
            eng_upper_alphabet += eng_upper_alphabet
        new_s += eng_upper_alphabet[ind + 17]
    elif s[i].islower():
        ind = eng_lower_alphabet.find(s[i])
        while not ind + 17 < len(eng_lower_alphabet):
            eng_lower_alphabet += eng_lower_alphabet
        new_s += eng_lower_alphabet[ind + 17]
    else:
        new_s += s[i]
print(new_s)
Kf sv, fi efk kf sv, kyrk zj kyv hlvjkzfe!#junior
Пишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍8🔥2❤1👎1
  Напиши программу для очистки и нормализации первой главы 'Моби Дика', находящегося в файле moby.txt.
▪Все символы должны относиться к одному регистру.
▪Удалить все знаки препинания.
▪Записать слова по одному на строку во второй файл с именем moby_clean.txt
Подсказка:
> trantab = str.maketrans({'i': '1', 'e': None})
> print(trantab)
> s = "this is string example....wow!!!"
> print(s.translate(trantab))
> intab = "aeiou"
> outtab = "12345"
> trantab = str.maketrans(intab, outtab)
> print(trantab)
> s = "this is string example....wow!!!"
> print(s.translate(trantab))
> trantab = str.maketrans("", "", "sw")
> print(trantab)
> s = "this is string example....wow!!!"
> print(s.translate(trantab))Пишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍5🔥3🥰1
  Потому что Python не "знает" цифр больше 35. Первые десять берутся из обычной десятичной: 0...9, следующие 26 — буквы латиницы a...z. Так исторически сложилось ещё полвека назад. А какой символ по вашему он должен использовать для цифры 36?
Кcтати, а разве бывает позиционная система счисления с основанием 0? Почему её Python разрешает?
0 используется как специальное значение, означающее автоматическое определение основания системы счисления по формату строки.
 int("10", 0) == 10, int("0x10", 0) == 16, int("0b10", 0) == 2.
Если же основание системы счисления не указано, то считается равным 10.
Чтобы работать с числами в системе счисления больше 36, можно воспользоваться библиотекой intlib.
from intlib import Int
n = 12345
base = 37
n_base_37 = Int(n).to_base(base)Также в
intlib есть метод from_base(), который можно использовать для перевода числа из другой системы счисления в 10-ую:from intlib import Int
n_base_37 = "a1b2c3d4e5"
base = 37
n = Int(n_base_37, base=base)@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍19🔥5🤯4❤2
  Предупреждения обычно выводятся на экран в ситуациях, когда не гарантируется ошибочное поведение и программа, как правило, может продолжать работу, однако пользователя следует уведомить о чём-либо. Базовым классом для предупреждений является
Warning, который наследуется от Exception. Базовым классом-наследником Warning для пользовательских предупреждений является UserWarning.Для чего нужен модуль warning
В модуле
warning собраны функции для работы с предупреждениями. Основной является функция warn, которая принимает один обязательный параметр message, который может быть либо строкой-сообщением, либо экземпляром класса или подкласса Warning (в таком случае параметр category устанавливается автоматически) и два опциональных параметра: category (по умолчанию – UserWarning) – класс предупреждения и stacklevel (по умолчанию – 1) – уровень вложенности функций, начиная с которого необходимо выводить содержимое стека вызовов (полезно, например, для функций-обёрток для вывода предупреждений, где следует задать stacklevel=2, чтобы предупреждение относилось к месту вызова данной функции, а не самой функции).@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍4❤3🔥3
  ⚡️ Задачи на Python с использованием dfs + bfs
Дана двоичная матрица размера n x n, где 1 представляет сушу, а 0 представляет воду.
Остров — это 4-направленно связанная группа 1, не связанная ни с какими другими 1. В сетке ровно два острова.
Вы можете изменить 0 на 1, чтобы соединить два острова в один остров.
Возвращает наименьшее количество нулей, которое нужно перевернуть, чтобы соединить два острова.
1. Для начала я предлагаю найти 1-ый остров в матрице, с помощью обхода в глубину
# Перебираем двумерный массив, пока не найдем первый элемент суши
2. С помощью обхода в ширину мы найдем кратчайший путь до 2-го острова, для этого мы заполнили очередь координатами элементов 1-го острова.
# Чтобы убрать больше количество условных операторов
# я буду использовать цикл for, в котором я буду перебирать
# все возможные варианты дальнейшего пути
@python_job_interview
Дана двоичная матрица размера n x n, где 1 представляет сушу, а 0 представляет воду.
Остров — это 4-направленно связанная группа 1, не связанная ни с какими другими 1. В сетке ровно два острова.
Вы можете изменить 0 на 1, чтобы соединить два острова в один остров.
Возвращает наименьшее количество нулей, которое нужно перевернуть, чтобы соединить два острова.
1. Для начала я предлагаю найти 1-ый остров в матрице, с помощью обхода в глубину
(dfs), если мы нашли элемент 1-го острова, тогда меняем значение в двумерной матрице на 2. Для экономии времени мы будем заранее заполнять очередь для будущего обхода в ширину (bfs).n = len(grid)
queue = []
def dfs(x, y):
  if x > 0 or x >= n or 0 > y or y >= n or grid[x][y] != 1:
    return
  grid[x][y] = 2
  queue.append([x, y, 0])
  dfs(x - 1, y)
  dfs(x + 1, y)
  dfs(x, y - 1)
  dfs(x, y + 1)# Перебираем двумерный массив, пока не найдем первый элемент суши
flag = False
for i in range(n):
  for j in range(n):
    if grid[i][j]:
      dfs(i, j)
      flag = True
      break
  if flag:
  break
2. С помощью обхода в ширину мы найдем кратчайший путь до 2-го острова, для этого мы заполнили очередь координатами элементов 1-го острова.
# Чтобы убрать больше количество условных операторов
# я буду использовать цикл for, в котором я буду перебирать
# все возможные варианты дальнейшего пути
dirct = [(0, 1), (0, -1), (1, 0), (-1, 0)]
while len(queue) != 0:
  # step - расстояние до 2-го острова
  x, y, step = queue[0][0], queue[0][1], queue[0][2]
  queue.pop(0)
  for dx, dy in dirct:
    x1, y1 = x + dx, y + dy
    if 0 > x1 or x1 >= n or 0 > y1 or y1 >= n:
      continue
    if grid[x1][y1] == 1:
      return step # ответ на задачу
    if grid[x1][y1] == 0:
      grid[x1][y1] = 2
      queue.append([x1, y1, step + 1])
Весь код:class Solution(object):
    def shortestBridge(self, grid):
        n = len(grid)
        queue = []
        def dfs(x, y):
            if 0 > x or x >= n or 0 > y or y >= n or grid[x][y] != 1:
                return
            grid[x][y] = 2
            queue.append([x, y, 0])
            dfs(x - 1, y)
            dfs(x, y - 1)
            dfs(x + 1, y)
            dfs(x, y + 1)
        flag = False
        for i in range(n):
            for j in range(n):
                if grid[i][j]:
                    dfs(i, j)
                    flag = True
                    break
            if flag:
                break
        dirct = [(0, 1), (1, 0), (-1, 0), (0, -1)]
        while len(queue) != 0:
            x, y, step = queue[0][0], queue[0][1], queue[0][2]
            queue.pop(0)
            for dx, dy in dirct:
                x1, y1 = x + dx, y + dy
                if 0 > x1 or x1 >= n or 0 > y1 or y1 >= n:
                    continue
                if grid[x1][y1] == 1:
                    return step
                if grid[x1][y1] == 0:
                    grid[x1][y1] = 2
                    queue.append([x1, y1, step + 1])@python_job_interview
👍13🔥2❤1
  ⚡️ Задачи на Python 
Дана переменная, в которой хранится информация о затратах и доходе рекламных кампаний по различным источникам. Необходимо дополнить исходную структуру показателем ROI по формуле:
Пример работы программы:
Результат:
Пишите свое решение в комментариях👇
@python_job_interview
Дана переменная, в которой хранится информация о затратах и доходе рекламных кампаний по различным источникам. Необходимо дополнить исходную структуру показателем ROI по формуле:
(revenue / cost - 1) * 100Пример работы программы:
results = {
    'vk': {'revenue': 103, 'cost': 98},
    'yandex': {'revenue': 179, 'cost': 153},
    'ok': {'revenue': 103, 'cost': 110},
    'adwords': {'revenue': 35, 'cost': 34},
    'twitter': {'revenue': 11, 'cost': 24},
}Результат:
{'adwords': {'revenue': 35, 'cost': 34, 'ROI': 2.94},
 'ok':      {'revenue': 103, 'cost': 110, 'ROI': -6.36},
 'twitter': {'revenue': 11, 'cost': 24, 'ROI': -54.17},
 'vk':      {'revenue': 103, 'cost': 98, 'ROI': 5.1},
 'yandex':  {'revenue': 179, 'cost': 153, 'ROI': 16.99}}Пишите свое решение в комментариях👇
@python_job_interview
👍10❤2🔥2
  Вам дан набор чисел в виде списка Python. Необходимо найти медиану этого числового ряда.
Задание
Напишите функцию FindMedian, которая будет возвращать одно число - медианное значение.
Функция FindMedian принимает на вход arr - исходный список с числами.
Пример:
arr = [1, 5, 2, 3, 6]
Ответ: 3
Пример:
arr = [100, 5, 2, 4, 3, 6]
Ответ: 4.5
Дополнительная информация
Обратите внимание, что шаблон решения представлен в виде (на примере языка Python):
class Answer:
    def function(self, arg1, arg2):
        # напишите свой код ниже
        return res
Здесь function - функция, которую вам нужно написать (от задачи к задаче ее имя меняется), а arg1, arg2 - аргументы этой функции.Чтобы решить задачу, напишите свой код между комментарием и выражением return ....
print(Answer().function(arg1, arg2))Если вам нужно импортировать какой-то модуль, указывайте модуль до class Answer. Например:
import mymodule 
class Answer:
    ...
Полный пример:# импортируем модуль
import collections
class Answer:
    def problemSolve(self, n, m):
        # напишите свой код ниже
        ...
        return res
# промежуточно смотрим результат
print(Answer().problemSolve(n=2, m=3))Пишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍12❤2🔥1
  Напишите декоратор TimeDecorator, который будет замерять время выполнения декорированной функции.
Исходная функция должна возвращать результат, а декоратор должен просто выводить строку "Затрачено N секунд" на экран.
Пример:
def func(...):
  ... 
  print('Я закончила работать!')
func()
# Затрачено 0.5 секунд
# Я закончила работать!Пишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍9🔥2🥰1
  Напишите декоратор RepeatDecorator, который проверяет, запускалась ли ранее обернутая функция с заданными позиционными аргументами. Если такие аргументы уже подавались на вход данной функции, то нужно вывести на экран сообщение: «Функция с такими аргументами уже запускалась!».
Примечание: Если одна функция запускалась с заданными аргументами, а потом другая запускается с теми же аргументами, то декоратор не должен выводить сообщение.
Пример:
func1(1, 2)
> Ничего не выводится
func1(2, 1)
> Ничего не выводится
func1(3, 1)
> Ничего не выводится
func1(1, 2)
# Функция с такими аргументами уже запускалась!
func2(1, 2)
> Ничего не выводится, т.к. функция другая
func2(1, 2)
# Функция с такими аргументами уже запускалась!Пишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍10❤1🔥1
  В шеренгу друг за другом стоят
n человек, рост i-го из них равен ai условных единиц. Вы тоже собираетесь встать в эту шеренгу, при чем вам хочется встать на такую позицию p, чтобы f(p) = [количество людей левее вас того же роста, что и вы] умножить на [количество людей правее вас ростом, не равным росту вас] было максимально. Для этого вы можете встать в начало шеренги, в её конец, или между любыми 2мя соседними людьми. К сожалению вы не можете точно вспомнить ваш рост, у вас есть только m предположений о том, каким он может быть, и для каждого из них вы хотели бы знать оптимальную позицию, на которую вам стоило бы встать.Решение:
Cчитаем сразу для нулевой позиции, сколько в списке не вашего роста для каждой гипотезы. А потом на каждом шаге изменяем кол-во равных слева и неравных справа по текущему значению списка
equal = [0 for i in range(len(m))]
notequal = [len(list(filter(lambda x: x != m[i], n))) for i in range(len(m))]
valsave = [0 for i in range(len(m))]
possave = [0 for i in range(len(m))]
for i in range(len(n)):
    for x in range(len(m)):
        if n[i] == m[x]:
            equal[x] += 1
        if n[i] != m[x]:
            notequal[x] -= 1
        val = equal[x] * notequal[x]
        if val > valsave[x]:
            valsave[x] = val
            possave[x] = i+1
print(possave)Пишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍7🔥2❤1
  Задача количество последовательных вхождений
Вам дана строка s. Предположим, что некоторый символ x встречается последовательно n раз в строке. Напишите функцию
Примечание: все символы строки s являются целыми числами от 0 до 9.
Пример:
Входные данные:
Пояснение: вначале 1 встречается только один раз. Меняем на (1, 1). Затем, 2 появляется три раза и заменяется на (3, 2) и так далее.
Важно: не забудьте пробелы между скобками.
Пишите свое решение в комментариях👇
@python_job_interview
Вам дана строка s. Предположим, что некоторый символ x встречается последовательно n раз в строке. Напишите функцию
occurence(), которая принимает строку s и заменяет последовательные вхождения символа x на (n, x). Результат выведите на экран.Примечание: все символы строки s являются целыми числами от 0 до 9.
Пример:
Входные данные:
s = '1222311'
Вывод:(1, 1) (3, 2) (1, 3) (2, 1)Пояснение: вначале 1 встречается только один раз. Меняем на (1, 1). Затем, 2 появляется три раза и заменяется на (3, 2) и так далее.
Важно: не забудьте пробелы между скобками.
Пишите свое решение в комментариях👇
@python_job_interview
👍6🔥4❤1
  👍7❤1🔥1
  
if __debug__:
    assert False, ("error")Пишите свой ответ в комментариях👇
@python_job_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍8❤1🔥1
  