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

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

@aldrson
Download Telegram
Задача с кодом. Ищем длину сторон треугольника

Дан треугольник с углами 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
Ответ к предыдущей задаче для новичков

def mostFrequentEven(nums):
evens = [num for num in nums if num % 2 == 0]
if not evens:
return -1
return min(evens, key=lambda x: (-evens.count(x), x))

#задача #coding
Задача с кодом. Все вхождения элемента в список

Условие:
Создайте функцию, которая вернет индексы всех вхождений элемента в списке.

Примеры:
get_indices(["a", "a", "b", "a", "b", "a"], "a") 
➞ [0, 1, 3, 5]
get_indices([1, 5, 5, 2, 7], 7)
➞ [4]
get_indices([1, 5, 5, 2, 7], 5)
➞ [1, 2]
get_indices([1, 5, 5, 2, 7], 8)
➞ []


Примечания:
- Если элемента нет в списке, то возвращаем [].
- Индекс списка начинается с 0.
- Без вложенных списков и сложных конструкций внутри списка.

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

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

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

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

smallestMultiple(5) --> 10
smallestMultiple(6) --> 6

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

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

def smallestMultiple(n):
return n if n % 2 == 0 else 2 * n

#задача #coding
Задача с кодом. Число, которое больше A и делится на B

Напишите функцию, которая будет принимать два числа: a и b. Она должна возвращать следующее число, которое будет больше a и b и без остатка делиться на b.

Примечание: a всегда будет больше, чем b.

Примеры:

divisible_by_b(17, 8) ➞ 24
divisible_by_b(98, 3) ➞ 99
divisible_by_b(14, 11) ➞ 22

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

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

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

Если таких букв несколько, то надо вывести ту, которая больше в лексикографическом смысле (b > a например). Если такой буквы нет, то следует вывести пустую строку.

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

findGreatestLetter("arRAzFif") --> 'R'
findGreatestLetter("AbCdEfGhIjK") --> ''

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

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

def findGreatestLetter(s):
return max([letter.upper() for letter in set(s) if letter.islower() and letter.upper() in s], default="")

#задача #coding
Задача с кодом. Множитель списков

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

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

Примеры:

multiply([4, 5]) 
➞ [[4, 4], [5, 5]]

multiply(["*", "%", "$"])
➞ [["*", "*", "*"], ["%", "%", "%"], ["$", "$", "$"]]

multiply(["A", "B", "C", "D", "E"])
➞ [["A", "A", "A", "A", "A"], ["B", "B", "B", "B", "B"], ["C", "C", "C", "C", "C"], ["D", "D", "D", "D", "D"], ["E", "E", "E", "E", "E"]]

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

#задача #coding
Задача с кодом. Пишем функцию для «тупого добавления»

Условие: Создайте функцию, которая принимает два параметра. Если оба параметра — строки, то сложите их математически, если оба — integer, тогда сконкатенируйте их. Если параметры разного типа — верните None.

Примеры:
stupid_addition(1, 2) ➞ "12" 
stupid_addition("1", "2") ➞ 3
stupid_addition("1", 2) ➞ None

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

#задача #coding