Pythonist.ru - образование по питону
25.9K subscribers
153 photos
3 videos
1.02K links
Pythonist.ru - помощь в подготовке к собеседованию на позицию Python Developer.
Реклама: @anothertechrock

РКН: https://kurl.ru/WPjOT
Download Telegram
Задача с кодом. Расстояние между точками

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

Координаты будут передаваться в функцию в виде строки из четырех чисел через запятую:

"x1,y1,x2,y2", где x1,y1 — координаты первой точки, а x2,y2 — координаты второй.

Примечание: если расстояние окажется числом с плавающей запятой, его нужно округлить до сотых (например, 2.34).

Примеры:
shortestDistance("1,1,2,1") ➞ 1
shortestDistance("1,1,3,1") ➞ 2
shortestDistance("-5,1,3,1") ➞ 8
shortestDistance("-5,2,3,1") ➞ 8.06

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

#задача #coding
Задача с кодом. Возраст отца и сына

Создайте функцию, которая будет принимать два аргумента: возраст отца f_age и возраст сына s_age. Функция должна высчитывать, сколько лет назад отец был или через сколько лет он будет в два раза старше сына.

Примеры:

age_difference(36, 7) ➞ 22
# Через 22 года отцу будет 58 лет, а сыну 29

age_difference(55, 30) ➞ 5
# 5 лет назад отцу было 50, а сыну 25

age_difference(42, 21) ➞ 0

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

#задача #coding
Задача с кодом. Сколько нулей?

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

Формула факториала: n! = 1 * 2 * 3 * ... * n

Подсказка: не нужно вычислять факториал. Постарайтесь найти другой способ определения количества нулей.

Примеры:

trailing_zeros(0) ➞ 0
# 0! = 1
# Нулей нет

trailing_zeros(6) ➞ 1
# 6! = 120
# 1 нуль в конце

trailing_zeros(1000) ➞ 249
# 1000! имеет 249 нулей в конце

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

#задача #coding
Задача с кодом. Список сумм чисел в списке

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

Под индексом 0 в итоговом списке должна быть сумма чисел исходного списка без числа под индексом 0 в исходном. Под индексом 1 в итоговом списке должна быть сумма чисел исходного списка без числа под индексом 1 в исходном. И так далее.

Пример для списка [1, 2, 3, 4]
Итоговый список, по индексам:
0 ➞ 2+3+4 = 9
1 ➞ 1+3+4 = 8
2 ➞ 1+2+4 = 7
3 ➞ 1+2+3 = 6
Итоговый список — [9, 8, 7, 6]

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

lst_ele_sum([1, 2, 3, 2, 1]) ➞ [8, 7, 6, 7, 8]

lst_ele_sum([1, 2]) ➞ [2, 1]

lst_ele_sum([1, 2, 3]) ➞ [5, 4, 3]

lst_ele_sum([1, 2, 3, 4, 5]) ➞ [14, 13, 12, 11, 10]

lst_ele_sum([10, 20, 30, 40, 50, 60]) ➞ [200, 190, 180, 170, 160, 150]

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

#задача #coding
Задача с кодом. Подсчитываем одинокие единицы

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

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

Примеры:

count_lone_ones(101) ➞ 2
count_lone_ones(1191) ➞ 1
count_lone_ones(1111) ➞ 0
count_lone_ones(462) ➞ 0

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

#задача #coding
Задача с кодом. Лишняя функция

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

Примеры:

f1 = redundant("apple")
f1() ➞ "apple"

f2 = redundant("pear")
f2() ➞ "pear"

f3 = redundant("")
f3() ➞ ""

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

#задача #coding
Задача с кодом. Валидаторы смещения и умножения

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

Вторая функция-валидатор (is_multiplied) должна работать аналогично, только проверять, образован ли второй список путем умножения каждого элемента первого списка на константу.

Примеры:

is_shifted([1, 2, 3], [2, 3, 4]) ➞ True
# Каждый элемент смещен на +1

is_shifted([1, 2, 3], [-9, -8, -7]) ➞ True
# Каждый элемент смещен на -10

is_multiplied([1, 2, 3], [10, 20, 30]) ➞ True
# Каждый элемент умножен на 10

is_multiplied([1, 2, 3], [-0.5, -1, -1.5]) ➞ True
# Каждый элемент умножен на -1/2

is_multiplied([1, 2, 3], [0, 0, 0]) ➞ True
# Каждый элемент умножен на 0

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

#задача #coding
Задача с кодом. Половина от половины

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

Значение аргумента a всегда будет как минимум вдвое больше значения b.

Примеры:

halve_count(4666, 544) ➞ 3
# (4666 -> 2333 -> 1166.5 -> 583.25)

halve_count(624, 8) ➞ 6
# (624 -> 312 -> 156 -> 78 -> 39 -> 19.5 -> 9.75)

halve_count(1000, 3) ➞ 8
# (1000 -> 500 -> 250 -> 125 -> 62.5 -> 31.25 -> 15.625 -> 7.8125 -> 3.90625)

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

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

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

Примечания:

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

Примеры:

get_days(
datetime.date(2019, 6, 14), # 14 июня 2019
datetime.date(2019, 6, 20) # 20 июня 2019
) ➞ 6

get_days(
datetime.date(2018, 12, 29), # 29 декабря 2018
datetime.date(2019, 1, 1) # 1 января 2019
) ➞ 3

get_days(
datetime.date(2020, 5, 24),
datetime.date(2019, 5, 24))
) ➞ -366

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

#задача #coding
Задача с кодом. Негатив

Предположим, у вас есть изображение, которое можно представить в виде двумерного списка нулей и единиц. Напишите функцию для создания «негатива» этого изображения. Она должна заменить все нули единицами, а единицы нулями.

Пример:

reverse_image([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])
➞ [
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
]


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

#задача #coding
Задача с кодом. Комплементарная РНК

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

РНК будет представлена в виде строки, содержащей только символы «A», «C», «G» и «U». Это первые буквы названий составных частей нуклеиновых кислот — аденина, цитозина, гуанина и урацила.

Комплементарными друг для друга являются аденин и урацил, гуанин и цитозин (т. е. пары A/U и G/C). Поэтому комплементарные цепочки РНК будут такими:

исходная цепочка -> комплементарная
"AAA" -> "UUU"
"UUU" -> "AAA"
"GGG" -> "CCC"
"CCC" -> "GGG"
"GGAACC" -> "CCUUGG"

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

Примечание: исходим из того, что инпут всегда будет валидным.

Примеры:
reverse_complement("GUGU") ➞ "ACAC"
reverse_complement("UCUCG") ➞ "CGAGA"
reverse_complement("CAGGU") ➞ "ACCUG"

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

#задача #coding
Задача с кодом. Сортировка авторов

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

Примечания:

- В списке могут содержаться как полные имена, так и инициалы.
- Если указывается не только фамилия, то она идет последней (т.е. Александр Пушкин, а не Пушкин Александр).
- Имена, фамилии, инициалы могут писаться буквами в разных регистрах.
- Если две фамилии начинаются с одной буквы, верните их в том порядке, в котором они стоят в списке.
- Обратите внимание на пробелы между инициалами.

Примеры:

sort_authors(["J. K. Rowling", "w. s.", "lewis carroll", "M. M."]) 
➞ ["lewis carroll", "M. M.", "J. K. Rowling", "w. s."]

sort_authors(["J. L.", "J. B. priestley", "L. C.", "Suzanne Collins"])
➞ ["L. C.", "Suzanne Collins", "J. L.", "J. B. priestley"]

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

#задача #coding
Задача с кодом. Сумма пропущенных чисел

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

Пропущенные числа — те, которых недостает в диапазоне от минимального до максимального числа в списке.

Примеры:

sum_missing_numbers([4, 3, 8, 1, 2]) ➞ 18
# 5 + 6 + 7 = 18

sum_missing_numbers([17, 16, 15, 10, 11, 12]) ➞ 27
# 13 + 14 = 27

sum_missing_numbers([1, 2, 3, 4, 5]) ➞ 0
# Тут нет пропущенных чисел (все числа в диапазоне [1, 5] присутствуют в списке)

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

#задача #coding
Задача с кодом на ночь). Процент снижения или увеличения цены

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

Примеры:

percentage_changed("$800", "$600")
➞ "25% decrease"

percentage_changed("$1000", "$840")
➞ "16% decrease"

percentage_changed("$100", "$950")
➞ "850% increase"

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

#задача #coding
Задача с кодом. Телефонный номер

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

Образец валидного номера — (123) 456-7890.

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

Примеры:

is_valid_phone_number("(123) 456-7890") ➞ True

is_valid_phone_number("1111)555 2345") ➞ False

is_valid_phone_number("098) 123 4567") ➞ False

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

#задача #coding
Задача с кодом. Соедините числа дефисами

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

Примечание: числа должны идти по порядку, строка должна начинаться с 1 и заканчиваться последней цифрой числа n.

Примеры:

join_digits(4) 
➞ "1-2-3-4"
join_digits(11)
➞ "1-2-3-4-5-6-7-8-9-1-0-1-1"
join_digits(15)
➞ "1-2-3-4-5-6-7-8-9-1-0-1-1-1-2-1-3-1-4-1-5"

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

#задача #coding
Задача с кодом. Одинаковые буквы

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

Примеры:

shared_letters("house", "home") ➞ "eho"
shared_letters("Micky", "mouse") ➞ "m"
shared_letters("house", "villa") ➞ ""

Примечания:

- Если совпадений букв нет, функция должна вернуть пустую строку
- Функция должна быть нечувствительной к регистру (если в одной строке есть буква A, а в другой a, то функция возвращает a.
- Буквы в итоговой строке должны быть отсортированы перед ее возвратом.

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

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

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

Примеры:

invert({ "z": "q", "w": "f" })
➞ { "q": "z", "f": "w" }

invert({ "a": 1, "b": 2, "c": 3 })
➞ { 1: "a", 2: "b", 3: "c" }

invert({ "zebra": "koala", "horse": "camel" })
➞ { "koala": "zebra", "camel": "horse" }

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

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

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

Примеры

pluralize(["cow", "pig", "cow", "cow"]) ➞ { "cows", "pig" }

pluralize(["table", "table", "table"]) ➞ { "tables" }

pluralize(["chair", "pencil", "arm"]) ➞ { "chair", "pencil", "arm" }

Примечания

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

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

#задача #coding
Задача с кодом. Смайлики

Из символов ( ) : можно составлять веселые и грустные смайлики. Для целей этой задачи:

- веселые смайлики :) и (: оцениваются в 1 балл,
- грустные смайлики :( и ): оцениваются в -1 балл.

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

Рабочий пример
happiness_number(":):(") ➞ -1
# 1-й и 2-й символы составляют :) +1 Итого: 1
# 2-й и 3-й символы составляют ): -1 Итого: 0
# 3-й и 4-й символы составляют :( -1 Итого: -1

Другие примеры
happiness_number(":):(") ➞ -1
happiness_number("(:)") ➞ 2
happiness_number("::::") ➞ 0

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

#задача #coding