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

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

@aldrson
Download Telegram
Задача с кодом. Пронумерованные карты

У вас и вашего соперника есть по 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
Задача для новичков

Напишите функцию isPowerOfFour(n), которая принимает целое число n и возвращает True, если данное число является степенью числа 4. В противном случае она должна вернуть значение False.

Целое число n является степенью числа четыре, если существует целое число x такое, что n == 4^x.

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

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

# Функция которая проверяет является ли число степенью 4
def isPowerOfFour(n):
if n <= 0:
return False

quaternary = format(n, 'b')
return quaternary.count('1') == 1 and quaternary.count('0') % 2 == 0

# Тесты для функции isPowerOfFour(n)
def test_isPowerOfFour():
assert isPowerOfFour(16) == True
assert isPowerOfFour(5) == False
assert isPowerOfFour(1) == True
assert isPowerOfFour(0) == False
assert isPowerOfFour(64) == True
assert isPowerOfFour(32) == False


#задача #coding
Задача с кодом. Нейтрализация

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

Исходим из того, что строки, передаваемые в функцию, всегда будут равной длины. Переданные строки взаимодействуют следующим образом:

- плюс и плюс дают плюс
- минус и минус дают минус
- плюс и минус нейтрализуют друг друга и вместе дают 0.

Разбор примера

neutralise("+-+", "+--") ➞ "+-0"
# Сравниваем первые символы двух строк, потом следующие два символа и т.д.
# "+" и "+" возвращают "+".
# "-" и "-" возвращают "-".
# "+" и "-" возвращают "0".
# Возвращаем строку символов.

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

№ 1
neutralise("--++--", "++--++") ➞ "000000"

№ 2
neutralise("-+-+-+", "-+-+-+") ➞ "-+-+-+"

№ 3
neutralise("-++-", "-+-+") ➞ "-+00" 

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

#задача #coding
Задача с кодом. Цензура

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

Примечания:

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

Примеры:

censor("The code is fourty") 
➞ "The code is ******"

censor("Two plus three is five")
➞ "Two plus ***** is five"

censor("aaaa aaaaa 1234 12345")
➞ "aaaa ***** 1234 *****"

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

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

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

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

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

# Функция, которая находит добавленную букву
def find_added_letter(s, t):
count = {}

for char in t:
if char in count:
count[char] += 1
else:
count[char] = 1

for char in s:
count[char] -= 1
if count[char] == 0:
del count[char]

return list(count.keys())[0]

# Тесты для функции find_added_letter(s, t)
def test_find_added_letter():
assert find_added_letter("abcd", "abcde") == "e"
assert find_added_letter("", "y") == "y"
assert find_added_letter("hello", "heoll") == "l"
assert find_added_letter("abc", "acb") == "b"
assert find_added_letter("xy", "xyz") == "z"


#задача #coding
Задача с кодом. Число Перрена

В последовательности Перрена каждое число представляет собой сумму двух чисел, стоящих перед этим числом на второй и третьей позиции. Первые три числа последовательности — 3, 0, 2.

Выглядит последовательность так:

P(0) P(1) P(2) P(3) P(4) P(5) P(6) P(7) ... P(n)
3, 0, 2, 3, 2, 5, 5, 7, ...

Напишите функцию, которая будет принимать индекс числа в последовательности (n) и возвращать число Перрена под этим индексом — P(n).

Примеры:

perrin(1) ➞ 0
perrin(8) ➞ 10
perrin(26) ➞ 1497

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

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

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

Примеры

sum_problem(-10, 1) ➞ -54
sum_problem(-20, 5) ➞ -195
sum_problem(90, 45) ➞ 3105

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

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

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

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

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

#задача #coding