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

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

@aldrson
Download Telegram
Задача с кодом. Скользящие числа

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

Примеры:

is_slidey(123454321) ➞ True
is_slidey(54345) ➞ True
is_slidey(987654321) ➞ True
is_slidey(1123) ➞ False
is_slidey(1357) ➞ False
is_slidey(1) ➞ True

Обратите внимание на примеры 4 и 5. Если в числе идут подряд одинаковые цифры или какая-то цифра в ряду пропущена, такое число мы не считаем скользящим.

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

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

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

Уродливое число — это положительное целое число, простыми множителями которого могут быть только числа 2, 3 и 5.

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

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

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

# Функция для проверки числа на "уродливость"
def isUgly(n):
if n <= 0:
return False
while n % 2 == 0:
n /= 2
while n % 3 == 0:
n /= 3
while n % 5 == 0:
n /= 5
return n == 1

# Тесты для функции isUrgly()
def test_is_ugly():
assert is_ugly(6) == True
assert is_ugly(1) == True
assert is_ugly(14) == False
assert is_ugly(0) == False
assert is_ugly(-6) == False


#задача #coding
Задача с кодом. Годится ли гора для восхождения?

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

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

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

Примеры:

is_scalable([1, 2, 4, 6, 7, 8]) ➞ True
is_scalable([40, 45, 50, 45, 47, 52]) ➞ True
is_scalable([2, 9, 11, 10, 18, 21]) ➞ False

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

#задача #coding
Задача с кодом. Складываем концы

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

Примечания:

- все элементы списка будут числами
- знак «минус» игнорируйте (см. пример 2)
- если список пуст, возвращаем 0.

Примеры:

ends_add_to_10([19, 46, 2098]) ➞ 3
ends_add_to_10([33, 44, -55]) ➞ 1
ends_add_to_10([]) ➞ 0

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

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

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

Возвращаемое целое число также должно быть неотрицательным.

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

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

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

# Функция для вычисления округленного квадратного корня
def mySqrt(n):
if n == 0:
return 0
if n == 1:
return 1
for i in range(1, n + 1):
if i * i > n:
return i - 1

# Тесты для функции mySqrt()
def test_mySqrt():
assert mySqrt(0) == 0
assert mySqrt(4) == 2
assert mySqrt(9) == 3
assert mySqrt(16) == 4
assert mySqrt(17) == 4
assert mySqrt(25) == 5
assert mySqrt(26) == 5
assert mySqrt(30) == 5
assert mySqrt(31) == 5


#задача #coding
Задача с кодом. Равны ли последние цифры?

Напишите функцию, которая будет принимать три числа (a, b, c) и возвращать True, если последняя цифра произведения a * b равна последней цифре числа c.

Примеры:

last_dig(25, 21, 125) ➞ True
# 25 * 21 = 525, последняя цифра - 5.
# Последняя цифра 125 - тоже 5.

last_dig(55, 226, 5190) ➞ True
last_dig(12, 215, 2142) ➞ False

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

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

У вас и вашего соперника есть по 5 самодельных карт. Каждая карта помечена какой-нибудь цифрой от 0 до 9 (случайным образом, повторы возможны). Выигрывает тот, кто сумел составить наибольшее двузначное число из имеющихся у него цифр.

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

Разбор примера
win_round([2, 5, 2, 6, 9], [3, 7, 3, 1, 2]) ➞ True
# Из ваших цифр можно составить число 96
# Ваш соперник может составить число 73
# В этом раунде побеждаете вы, потому что 96 > 73

Примеры:
win_round([2, 5, 2, 6, 9], [3, 7, 3, 1, 2]) ➞ True
win_round([1, 2, 3, 4, 5], [9, 8, 7, 6, 5]) ➞ False
win_round([4, 3, 4, 4, 5], [3, 2, 5, 4, 1]) ➞ False

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

#задача #coding