Ответ к предыдущей задаче для новичков
# Функция которая проверяет является ли число степенью 4
#задача #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.
Разбор примера
№ 1
#задача #coding
Напишите функцию, которая будет принимать две строки, состоящие из знаков «+» и «-», и возвращать строку — результат их взаимодействия.
Исходим из того, что строки, передаваемые в функцию, всегда будут равной длины. Переданные строки взаимодействуют следующим образом:
- плюс и плюс дают плюс
- минус и минус дают минус
- плюс и минус нейтрализуют друг друга и вместе дают 0.
Разбор примера
neutralise("+-+", "+--") ➞ "+-0"Другие примеры
# Сравниваем первые символы двух строк, потом следующие два символа и т.д.
# "+" и "+" возвращают "+".
# "-" и "-" возвращают "-".
# "+" и "-" возвращают "0".
# Возвращаем строку символов.
№ 1
neutralise("--++--", "++--++") ➞ "000000"№ 2
neutralise("-+-+-+", "-+-+-+") ➞ "-+-+-+"№ 3
neutralise("-++-", "-+-+") ➞ "-+00"Решение на нашем сайте.
#задача #coding
Задача с кодом. Цензура
Создайте функцию, которая будет принимать строку и цензурировать (закрывать звездочками) слова длиннее четырех букв.
Примечания:
- не цензурируйте слова, состоящие ровно из четырех букв
- если в строке все слова короткие (четыре буквы и меньше), верните исходную строку
- количество звездочек, замещающих слово, должно быть равным количеству букв в этом слове.
Примеры:
#задача #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
Задача для новичков
Напишите функцию
Свои варианты пишите в комментариях! Решение - сегодня вечером.
#задача #coding
Напишите функцию
find_added_letter(s, t)
, которая приниает на вход две строки: s
и t
. Строка t
генерируется путем случайной перетасовки строки s
, а затем добавляется еще одна буква в случайную позицию. Верните букву, которая была добавлена к строке t
.Свои варианты пишите в комментариях! Решение - сегодня вечером.
#задача #coding
Ответ к предыдущей задаче для новичков
# Функция, которая находит добавленную букву
#задача #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.
Выглядит последовательность так:
Примеры:
#задача #coding
В последовательности Перрена каждое число представляет собой сумму двух чисел, стоящих перед этим числом на второй и третьей позиции. Первые три числа последовательности — 3, 0, 2.
Выглядит последовательность так:
P(0) P(1) P(2) P(3) P(4) P(5) P(6) P(7) ... P(n)Напишите функцию, которая будет принимать индекс числа в последовательности (n) и возвращать число Перрена под этим индексом — P(n).
3, 0, 2, 3, 2, 5, 5, 7, ...
Примеры:
perrin(1) ➞ 0Решение на нашем сайте.
perrin(8) ➞ 10
perrin(26) ➞ 1497
#задача #coding
Задача с кодом. Сумма диапазона чисел
Напишите функцию, которая будет принимать начальное и конечное число в диапазоне чисел и возвращать сумму всех чисел этого диапазона.
Примеры
#задача #coding
Напишите функцию, которая будет принимать начальное и конечное число в диапазоне чисел и возвращать сумму всех чисел этого диапазона.
Примеры
sum_problem(-10, 1) ➞ -54Решение на нашем сайте.
sum_problem(-20, 5) ➞ -195
sum_problem(90, 45) ➞ 3105
#задача #coding
Задача для новичков
Напишите функцию
Напишите также тесты с использованием
Свои варианты пишите в комментариях! Решение - сегодня вечером.
#задача #coding
Напишите функцию
is_palindrome()
, которая принимает на вход число и проверяет, является ли оно палиндромом. Палиндромом называется число, которое одинаково читается слева направо и справа налево.Напишите также тесты с использованием
pytest
, чтобы проверить правильность работы функции на разных входных данных.Свои варианты пишите в комментариях! Решение - сегодня вечером.
#задача #coding
Ответ к предыдущей задаче для новичков
# is_palindrome.py
#задача #coding
# is_palindrome.py
def is_palindrome(number):# test_is_palindrome.py
number_str = str(number)
return number_str == number_str[::-1]
import pytest
from palindrome import is_palindrome
def test_positive_palindrome():
assert is_palindrome(121) == True
assert is_palindrome(1221) == True
def test_negative_palindrome():
assert is_palindrome(123) == False
assert is_palindrome(12321) == False
def test_single_digit():
assert is_palindrome(9) == True
def test_negative_number():
assert is_palindrome(-121) == False
def test_large_palindrome():
assert is_palindrome(12345678987654321) == True
def test_empty_input():
with pytest.raises(ValueError):
is_palindrome('')
def test_string_input():
with pytest.raises(ValueError):
is_palindrome('hello')
def test_float_input():
with pytest.raises(ValueError):
is_palindrome(12.21)
В этом примере функция is_palindrom()
принимает число, преобразует его в строку и далее сравнивает эту строку с этой же строкой, но записанной в обратном порядке. Если они равны, возвращается True
, в противном случае False
. Тесты проверяют правильность работы функции для различных входных данных.#задача #coding
Задача с кодом. ABACABADABACABA
Напишите функцию, которая будет принимать буквы английского алфавита и возвращать строки, придерживаясь шаблона «ABACABADABACABA».
Суть шаблона в следующем. Все начинается с первой буквы (А). Каждая следующая буква добавляется в центр, а предыдущий паттерн располагается по бокам от нее. Например:
#задача #coding
Напишите функцию, которая будет принимать буквы английского алфавита и возвращать строки, придерживаясь шаблона «ABACABADABACABA».
Суть шаблона в следующем. Все начинается с первой буквы (А). Каждая следующая буква добавляется в центр, а предыдущий паттерн располагается по бокам от нее. Например:
A ➞ **A**Примеры
B ➞ A**B**A
C ➞ ABA**C**ABA
D ➞ ABACABA**D**ABACABA
E ➞ ABACABADABACABA**E**ABACABADABACABA
F ➞ ABACABADABACABAEABACABADABACABA**F**ABACABADABACABAEABACABADABACABA
И так далее
ABA("A") ➞ "A"Решение на нашем сайте.
ABA("B") ➞ "ABA"
ABA("E") ➞ "ABACABADABACABAEABACABADABACABA"
#задача #coding
Задача с кодом. Цифровое расстояние
Напишите функцию, которая будет принимать два целых числа, вычислять модуль их разности и выводить сумму цифр полученного числа. Пример:
- Оба числа всегда будут одинаковой длины.
- Число на позиции num2 будет больше или равно числу на позиции num1.
Примеры
#задача #coding
Напишите функцию, которая будет принимать два целых числа, вычислять модуль их разности и выводить сумму цифр полученного числа. Пример:
digit_distance(234, 489) ➞ 12Примечания:
# |2 - 4| + |3 - 8| + |4 - 9| = 2 + 5 + 5 = 12
- Оба числа всегда будут одинаковой длины.
- Число на позиции num2 будет больше или равно числу на позиции num1.
Примеры
digit_distance(121, 599) ➞ 19Решение на нашем сайте.
digit_distance(12, 12) ➞ 0
digit_distance(10, 20) ➞ 1
#задача #coding
Задача для новичков
Напишите функцию
Напишите также тесты с использованием
Свои варианты пишите в комментариях! Решение - сегодня вечером.
#задача #coding
Напишите функцию
calculate_even_sum()
, которая принимает на вход список чисел и возвращает сумму всех четных чисел в этом списке.Напишите также тесты с использованием
pytest
, чтобы проверить правильность работы функции на разных входных данных.Свои варианты пишите в комментариях! Решение - сегодня вечером.
#задача #coding
Ответ к предыдущей задаче для новичков
# calculate_even_sum.py
#задача #coding
# calculate_even_sum.py
def calculate_even_sum(numbers):# test_calculate_even_sum.py
return sum(num for num in numbers if num % 2 == 0)
import pytest
from calculate_even_sum import calculate_even_sum
def test_positive_numbers():
assert calculate_even_sum([1, 2, 3, 4, 5]) == 6
assert calculate_even_sum([10, 20, 30, 40, 50]) == 150
def test_negative_numbers():
assert calculate_even_sum([-1, -2, -3, -4, -5]) == -6
assert calculate_even_sum([-10, -20, -30, -40, -50]) == -150
def test_mixed_numbers():
assert calculate_even_sum([-5, 10, -3, 8, 2]) == 20
assert calculate_even_sum([0, 0, 0, 0, 0]) == 0
def test_empty_list():
assert calculate_even_sum([]) == 0
def test_no_even_numbers():
assert calculate_even_sum([1, 3, 5, 7, 9]) == 0
В этом примере функция calculate_even_sum()
принимает список целых чисел и возвращает сумму только четных чисел, проверяя для этого элементы списка на четность.Тесты проверяют правильность работы функции для различных входных данных.#задача #coding
Задача с кодом. Самое длинное слово
Напишите функцию, которая будет находить самое длинное слово в предложении.
Если будет найдено два и больше слов одинаковой длины, нужно вернуть первое из них.
Небуквенные символы (апостроф, точка, запятая и т. п.) считаются частью слова, к которому прилегают.
Примеры
#задача #coding
Напишите функцию, которая будет находить самое длинное слово в предложении.
Если будет найдено два и больше слов одинаковой длины, нужно вернуть первое из них.
Небуквенные символы (апостроф, точка, запятая и т. п.) считаются частью слова, к которому прилегают.
Примеры
longest_word("Margaret's toy is a pretty doll.")Решение на нашем сайте.
➞ "Margaret's"
longest_word("A thing of beauty is a joy forever.")
➞ "forever."
longest_word("Forgetfulness is by all means powerless!")
➞ "Forgetfulness"
#задача #coding
Задача с кодом. Сложное упорядочивание
Упорядочивание слов в ступенчатом лексикографическом порядке происходит так:
1. Сперва слова упорядочиваются по длине
2. Затем слова одного размера упорядочиваются в словарном порядке (по алфавиту).
Например:
- «tray» < «trapped», потому что «tray» имеет длину 4, а «trapped» - 7
- «trap» < «tray», потому что у обоих слов длина 4, но «trap» идет перед «tray» в словаре.
Задание:
Напишите функцию, которая будет принимать список слов и возвращать список, где они будут упорядочены в ступенчатом лексикографическом порядке.
Примеры:
#задача #coding
Упорядочивание слов в ступенчатом лексикографическом порядке происходит так:
1. Сперва слова упорядочиваются по длине
2. Затем слова одного размера упорядочиваются в словарном порядке (по алфавиту).
Например:
- «tray» < «trapped», потому что «tray» имеет длину 4, а «trapped» - 7
- «trap» < «tray», потому что у обоих слов длина 4, но «trap» идет перед «tray» в словаре.
Задание:
Напишите функцию, которая будет принимать список слов и возвращать список, где они будут упорядочены в ступенчатом лексикографическом порядке.
Примеры:
make_grlex(["small", "big"])Решение на нашем сайте.
➞ ["big", "small"]
make_grlex(["cat", "ran", "for", "the", "rat"])
➞ ["cat", "for", "ran", "rat", "the"]
make_grlex(["this", "is", "a", "small", "test"])
➞ ["a", "is", "test", "this", "small"]
#задача #coding
Задача с кодом. Переворот
Число 6090609 имеет особенность: если его перевернуть вверх ногами (т. е. развернуть на 180 градусов), вы получите то же самое число — 6090609
Напишите функцию, которая будет принимать строку из цифр 0, 6, 9 и определять, будет ли образованное ими число после переворота тем же самым числом.
Примеры:
#задача #coding
Число 6090609 имеет особенность: если его перевернуть вверх ногами (т. е. развернуть на 180 градусов), вы получите то же самое число — 6090609
Напишите функцию, которая будет принимать строку из цифр 0, 6, 9 и определять, будет ли образованное ими число после переворота тем же самым числом.
Примеры:
same_upsidedown("6090609") ➞ TrueРешение на нашем сайте.
same_upsidedown("9669") ➞ False
# При перевороте превращается в 6996
same_upsidedown("69069069") ➞ True
#задача #coding
Задача с кодом. Расстояние между точками
Напишите функцию, которая будет принимать координаты двух точек (в двумерной декартовой системе координат) и возвращать расстояние между этими точками.
Координаты будут передаваться в функцию в виде строки из четырех чисел через запятую:
Примечание: если расстояние окажется числом с плавающей запятой, его нужно округлить до сотых (например, 2.34).
Примеры:
#задача #coding
Напишите функцию, которая будет принимать координаты двух точек (в двумерной декартовой системе координат) и возвращать расстояние между этими точками.
Координаты будут передаваться в функцию в виде строки из четырех чисел через запятую:
"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
Задача с кодом. Возраст отца и сына
Создайте функцию, которая будет принимать два аргумента: возраст отца
Примеры:
#задача #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
Задача с кодом. Сколько нулей?
Напишите функцию, которая будет принимать число
Формула факториала:
Примеры:
#задача #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]
Другие примеры:
#задача #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