Pythonist.ru - образование по питону
26.6K subscribers
75 photos
1 video
925 links
Pythonist.ru - помощь в подготовке к собеседованию на позицию Python Developer.
Реклама: @anothertechrock

Контент канала:
1. Разбор вопросов с собеседований
2. Книги
3. Задачи на логику
4. Проект Эйлера
5. Видео
6. Тесты по Python 3

@aldrson
Download Telegram
Задача с кодом. Сколько полных оборотов?

Дан список, состоящий из произвольного числа направлений поворотов («left» и/или «right»). Напишите функцию, которая будет принимать этот список и определять, сколько полных оборотов сделано.

Примечания:
- Каждый поворот влево или вправо считается поворотом на 90 градусов.
- Один оборот = 360 градусов в одном направлении.
- Вернуть надо положительное число.

Примеры:
spin_around(["left", "right", "left", "right"]) ➞ 0
spin_around(["right", "right", "right", "right", "right", "right", "right", "right"]) ➞ 2
spin_around(["left", "left", "left", "left"]) ➞ 1


Решение на нашем сайте.

#задача #coding
Задача для новичков

Дополнение к целому числу — это целое число, которое вы получите, если замените все 0 на 1 и все 1 на 0 в его двоичном представлении. Например, целое число 5 — это «101» в двоичном представлени, а его дополнение — «010», то есть целое число 2.

Напишите функцию findComplement(), которая принимает на вход целое число, а выводит его дополнение.

Примеры работы данной функции:

findComplement(10) --> 5
findComplement(5) --> 2

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def findComplement(num):
mask = 1
while mask < num:
mask = (mask << 1) + 1
return num ^ mask

#задача #coding
Задача с кодом. Складываем лист бумаги

Создайте функцию, которая будет возвращать толщину листа бумаги (в метрах) после складывания этого листа n раз. Толщина несложенного листа — 0,5 мм. Ответы не округлять.

Примеры:
num_layers(1) ➞ "0.001m"
# Лист бумаги, сложенный 1 раз, имеет толщину 1 мм (= 0.001 м)

num_layers(4) ➞ "0.008m"
# Лист бумаги, сложенный 4 раза,имеет толщину 8 мм (= 0.008 м)

num_layers(21) ➞ "1048.576m"
# Лист бумаги, сложенный 21 раз, имеет толщину 1048576 мм (= 1048.576 м)


Решение на нашем сайте.

#задача #coding
Задача с кодом. Преобразовать словарь в список

Напишите функцию, которая преобразовывает dict в список списков. Возвращаем пустой список, если словарь пустой.

Примеры:
to_list({ "a": 1, "b": 2 }) 
➞ [["a", 1], ["b", 2]]

to_list({ "shrimp": 15, "tots": 12 })
➞ [["shrimp", 15], ["tots", 12]]

to_list({})
➞ []


Решение на нашем сайте.

#задача #coding
Задача для новичков

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

Примеры работы данной функции:

chunkArray([1,2,3,4,5], 1) --> [[1], [2], [3], [4], [5]]
chunkArray([1,9,6,3,2], 6) --> [[1, 9, 6, 3, 2]]
chunkArray([1,9,6,3,2], 3) --> [[1, 9, 6], [3, 2]]

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def chunkArray(arr, size):
chunked = []
index = 0
while index < len(arr):
chunked.append(arr[index:index+size])
index += size
return chunked

#задача #coding
Задача с кодом. Деление чисел на два

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

Примеры:
number_split(4) ➞ [2, 2]
number_split(10) ➞ [5, 5]
number_split(11) ➞ [5, 6]
number_split(-9) ➞ [-5, -4]


Решение на нашем сайте.

#задача #coding
Задача с кодом. Ищем чаще всего встречающееся и самое длинное слово в тексте

Напишите программу, которая принимает текст и выводит два слова: то, которое встречается в тексте чаще всего, и самое длинное.

Решение на нашем сайте.

#задача #coding
Задача с кодом. Ищем длину сторон треугольника

Дан треугольник с углами 30, 60 и 90 градусов. Напишите функцию, которая будет принимать длину самой короткой стороны треугольника (т.е. одного из катетов) и возвращать длину гипотенузы и второго катета.

Примечания:
- В прямоугольном треугольнике, один из углов которого равен 30 градусам, самая короткая сторона ровно в два раза короче самой длинной.
- По теореме Пифагора в прямоугольном треугольнике сумма квадратов катетов равна квадрату гипотенузы.
- Числа округляем до двух знаков после запятой.

Примеры:
returnsides(1) ➞ (2, 1.73)
returnsides(2) ➞ (4, 3.46)
returnsides(3) ➞ (6, 5.2)


Решение на нашем сайте.

#задача #coding
Задача с кодом. Количество сущностей

Создайте класс User и добавьте способ для проверки количества пользователй (количества сущностей), которые были созданы.

Примеры:
u1 = User("johnsmith10") 
User.user_count ➞ 1
u2 = User("marysue1989")
User.user_count ➞ 2
u3 = User("milan_rodrick")
User.user_count ➞ 3


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

u1.username ➞ "johnsmith10" 
u2.username ➞ "marysue1989"
u3.username ➞ "milan_rodrick"


Решение на нашем сайте.

#задача #coding
Задача для новичков

Напишите функцию makePalindrome(), на вход которой подается строка состоящая из строчных английских букв.

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

Напомним, что палиндромом называется строка, которая читается одинаково в обоих направлениях.

Примеры работы данной функции:

makePalindrome("egcfe") --> 'efcfe'
makePalindrome("seven") --> 'neven'

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def makePalindrome(s):
s = list(s)
n = len(s)
for i in range(n // 2):
j = n - i - 1
if s[i] != s[j]:
s[i] = s[j] = min(s[i], s[j])
return ''.join(s)

#задача #coding
Задача с кодом. Игры со сложением

Ваша задача — написать функцию. Функция будет принимать любое число. Из цифр этого числа нужно будет составить пары и сложить получившиеся числа. Функция должна вернуть сумму чисел, составленных из пар цифр.

Для составления пары берем первую и последнюю цифру числа, продвигаясь от краев к центру.

Пример с разбором

closing_in_sum(2520) ➞ 72
# Первая и последняя цифры - 2 и 0.
# Из цифр 2 и 0 составляем число 20.
# Вторая и предпоследняя цифра - 5 и 2.
# Из цифр 5 и 2 составляем число 52.
# 20 + 52 = 72

Другие примеры

closing_in_sum(121) ➞ 13
# 11 + 2

closing_in_sum(1039) ➞ 22
# 19 + 3

closing_in_sum(22225555) ➞ 100
# 25 + 25 + 25 + 25

Примечания
- Если передано нечетное количество цифр, центральную цифру просто прибавляем к общей сумме (см. пример 1).
- Нуль тоже считаем отдельной цифрой (см. пример 2).

Решение на нашем сайте.

#задача #coding
Задача с кодом. Сумма чисел от 1 до n

Напишите функцию, которая находила бы сумму элементов от 1 до N (включительно). Функция должна быть рекурсивной.

Примеры:
sum_numbers(5) ➞ 15 
// 1 + 2 + 3 + 4 + 5 = 15
sum_numbers(1) ➞ 1
sum_numbers(12) ➞ 78


Решение на нашем сайте.

#задача #coding
Задача для новичков

Напишите функцию averageValue(), которая принимает на вход список целых неотрицательных чисел.

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

Примеры работы данной функции:

averageValue([1,3,6,10,12,15]) --> 9
averageValue([1,2,4,7,10]) --> 0

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def averageValue(nums):
x = [i for i in nums if i % 2 == 0 and i % 3 == 0]
return 0 if len(x) == 0 else sum(x) // len(x)

#задача #coding
Задача с кодом. Выводим расширение файла

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

Решение на нашем сайте.

#задача #coding
Задача с кодом. Недостающие буквы

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

Примечания:

- Подразумевается использование английского алфавита. Всего в двух строках должно быть 26 букв.
- Все буквы будут в нижнем регистре.

Примеры

get_missing_letters("abcdefgpqrstuvwxyz") 
➞ "hijklmno"

get_missing_letters("zyxwvutsrq")
➞ "abcdefghijklmnop"

get_missing_letters("abc")
➞ "defghijklmnopqrstuvwxyz"

get_missing_letters("abcdefghijklmnopqrstuvwxyz")
➞ ""

Решение на нашем сайте.

#задача #coding
Задача для новичков

Напишите функцию mostFrequentEven(), на вход которой подается список целых чисел. Эта функция должна вывести наиболее часто встречающееся целое число. Если таких несколько, то нужно вывести минимальное, а если их нет вообще, то вывести -1.

Примеры работы данной функции:

mostFrequentEven([0,1,2,2,4,4,1]) --> 2
mostFrequentEven([29,47,21,41,13,37,25,7]) --> -1

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding