Кратко
Секция статьи "Кратко"Требования к задачам:
- Должны проходить все тесты;
- Написаны без использования сторонних библиотек (можно внутренние, к примеру
itertools
); - Код соответствует PEP8.
Задача №1.
Секция статьи "Задача №1."Написать метод domain
, который вернет домен из url адреса:
url = "http://github.com/carbonfive/raygun" -> domain name = "github"url = "http://www.zombie-bites.com" -> domain name = "zombie-bites"url = "https://www.cnet.com" -> domain name = "cnet"
url = "http://github.com/carbonfive/raygun" -> domain name = "github" url = "http://www.zombie-bites.com" -> domain name = "zombie-bites" url = "https://www.cnet.com" -> domain name = "cnet"
Основа:
def domain_name(url): return
def domain_name(url): return
Для проверки:
assert domain_name("http://google.com") == "google"assert domain_name("http://google.co.jp") == "google"assert domain_name("www.xakep.ru") == "xakep"assert domain_name("https://youtube.com") == "youtube"
assert domain_name("http://google.com") == "google" assert domain_name("http://google.co.jp") == "google" assert domain_name("www.xakep.ru") == "xakep" assert domain_name("https://youtube.com") == "youtube"
Задача №2.
Секция статьи "Задача №2."Написать метод int32
, который принимает на вход 32-битное целое число (integer
) и возвращает строковое представление его в виде IPv4-адреса:
2149583361 -> "128.32.10.1"32 -> "0.0.0.32"0 -> "0.0.0.0"
2149583361 -> "128.32.10.1" 32 -> "0.0.0.32" 0 -> "0.0.0.0"
Основа:
def int32_to_ip(int32): return
def int32_to_ip(int32): return
Для проверки:
assert int32_to_ip(2154959208) == "128.114.17.104"assert int32_to_ip(0) == "0.0.0.0"assert int32_to_ip(2149583361) == "128.32.10.1"
assert int32_to_ip(2154959208) == "128.114.17.104" assert int32_to_ip(0) == "0.0.0.0" assert int32_to_ip(2149583361) == "128.32.10.1"
Задача №3.
Секция статьи "Задача №3."Написать метод zeros
, который принимает на вход целое число (integer
) и возвращает количество конечных нулей в факториале (N!
) заданного числа:
Будьте осторожны 1000! имеет 2568 цифр.
Доп. инфо: http://mathworld.wolfram.com/Factorial.html
zeros(6) = 1# 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 --> 1 trailing zerozeros(12) = 2# 12! = 479001600 --> 2 trailing zeros
zeros(6) = 1 # 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 --> 1 trailing zero zeros(12) = 2 # 12! = 479001600 --> 2 trailing zeros
Основа:
def zeros(n): return 0
def zeros(n): return 0
Подсказка: вы не должны вычислять факториал. Найдите другой способ найти количество нулей.
Для проверки:
assert zeros(0) == 0assert zeros(6) == 1assert zeros(30) == 7
assert zeros(0) == 0 assert zeros(6) == 1 assert zeros(30) == 7
Задача №4.
Секция статьи "Задача №4."Написать метод bananas
, который принимает на вход строку и возвращает количество слов «banana» в строке.
(Используйте - для обозначения зачеркнутой буквы)
Input: bbananana
Output:
b-anana--b-anan--ab-ana--nab-an--anab-a--nanab---anana-banana---banan--a-bana--na-ban--ana-ba--nana-b--anana
b-anana-- b-anan--a b-ana--na b-an--ana b-a--nana b---anana -banana-- -banan--a -bana--na -ban--ana -ba--nana -b--anana
Основа:
def bananas(s) -> set: result = set() # Your code here! return result
def bananas(s) -> set: result = set() # Your code here! return result
Для проверки:
assert bananas("banann") == set()assert bananas("banana") == {"banana"}assert bananas("bbananana") == {"b-an--ana", "-banana--", "-b--anana", "b-a--nana", "-banan--a", "b-ana--na", "b---anana", "-bana--na", "-ba--nana", "b-anan--a", "-ban--ana", "b-anana--"}assert bananas("bananaaa") == {"banan-a-", "banana--", "banan--a"}assert bananas("bananana") == {"ban--ana", "ba--nana", "bana--na", "b--anana", "banana--", "banan--a"}
assert bananas("banann") == set() assert bananas("banana") == {"banana"} assert bananas("bbananana") == {"b-an--ana", "-banana--", "-b--anana", "b-a--nana", "-banan--a", "b-ana--na", "b---anana", "-bana--na", "-ba--nana", "b-anan--a", "-ban--ana", "b-anana--"} assert bananas("bananaaa") == {"banan-a-", "banana--", "banan--a"} assert bananas("bananana") == {"ban--ana", "ba--nana", "bana--na", "b--anana", "banana--", "banan--a"}
Задача №5.
Секция статьи "Задача №5."Написать метод count
, который принимает на вход список простых множителей (primesL
) и целое число, предел (limit
), после чего попробуйте сгенерировать по порядку все числа. Меньшие значения предела, которые имеют все и только простые множители простых чисел primesL
.
primesL = [2, 5, 7]limit = 500List of Numbers Under 500 Prime Factorization___________________________________________________________ 70 [2, 5, 7] 140 [2, 2, 5, 7] 280 [2, 2, 2, 5, 7] 350 [2, 5, 5, 7] 490 [2, 5, 7, 7]
primesL = [2, 5, 7] limit = 500 List of Numbers Under 500 Prime Factorization ___________________________________________________________ 70 [2, 5, 7] 140 [2, 2, 5, 7] 280 [2, 2, 2, 5, 7] 350 [2, 5, 5, 7] 490 [2, 5, 7, 7]
5 из этих чисел меньше 500, а самое большое из них 490.
primesL = [2, 5, 7]limit = 500count_find_num(primesL, val) == [5, 490]
primesL = [2, 5, 7] limit = 500 count_find_num(primesL, val) == [5, 490]
Основа:
def count_find_num(primesL, limit): # your code here return []
def count_find_num(primesL, limit): # your code here return []
Для проверки:
primesL = [2, 3]limit = 200assert count_find_num(primesL, limit) == [13, 192]primesL = [2, 5]limit = 200assert count_find_num(primesL, limit) == [8, 200]primesL = [2, 3, 5]limit = 500assert count_find_num(primesL, limit) == [12, 480]primesL = [2, 3, 5]limit = 1000assert count_find_num(primesL, limit) == [19, 960]primesL = [2, 3, 47]limit = 200assert count_find_num(primesL, limit) == []
primesL = [2, 3] limit = 200 assert count_find_num(primesL, limit) == [13, 192] primesL = [2, 5] limit = 200 assert count_find_num(primesL, limit) == [8, 200] primesL = [2, 3, 5] limit = 500 assert count_find_num(primesL, limit) == [12, 480] primesL = [2, 3, 5] limit = 1000 assert count_find_num(primesL, limit) == [19, 960] primesL = [2, 3, 47] limit = 200 assert count_find_num(primesL, limit) == []