PythonBoost - сообщество питонистов
13.6K subscribers
329 photos
5 videos
582 links
Лучший Python телеграм канал для новичков.

Цель: подготовка студентов, начинающих питонистов к нахождению первой работы.

Канал не для senior python developers и даже не для middle, хотя и вам будет что посмотреть.

С рекламой: @anothertechrock
@aldrson
Download Telegram
Кодинг-марафон. Решение Задачи 4

Варианты написания функции для проверки PIN-кода можно посмотреть на сайте наших партнеров из pythonist.ru.

Смотреть решения

Условие конкурса в закрепе канала.

#задача #марафон
Кодинг-марафон. Задача № 5.

Условия конкурса читайте в закрепленной сверху записи канала.

Приз: 10 баллов.

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

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

Примеры:

area_of_country("Russia", 17098242) ➞ "Russia is 11.48% of the total world's landmass"

area_of_country("USA", 9372610) ➞ "USA is 6.29% of the total world's landmass"

area_of_country("Iran", 1648195) ➞ "Iran is 1.11% of the total world's landmass"

Присылаем номер задачи и ссылку на код сюда - @lex_draven

#задача #марафон
Кодинг-марафон. Решение Задачи 5

Варианты написания функции для вычисления процентного отношения площади страны к площади земной суши можно посмотреть на сайте наших партнеров из pythonist.ru.

Смотреть решения

Условие конкурса в закрепе канала.

#задача #марафон
Кодинг-марафон. Задача № 6.

Условия конкурса - в закрепленной сверху записи канала.

Приз: 10 баллов.

Задание:

В БД предприятия номера телефонов хранятся как попало и вам поручили написать функцию, которая приведёт их к одному формату: +7(909)101-10-10

Функция должна называться format_numbers, она принимает на вход строку (исходный номер) и возвращает строку (номер в нужном формате).

Сигнатура def format_numbers(phone_number: str) -> str:

Примечания по исходному номеру:

- помимо цифр может содержать дефисы, пробелы, скобки и знак + (но + только первым символом)
- номер всегда валиден (11 цифр)
- номер всегда начинается с 8 или +7, причем + может быть только в начале номера
- не может быть 2 идущих подряд дефисов, скобок или пробелов

Примеры:

format_numbers('+79091011010') == '+7(909)101-10-10'
format_numbers('8(909)1011010') == '+7(909)101-10-10'
format_numbers('+7 909 101-10-10') == '+7(909)101-10-10'

Присылаем номер задачи и ссылку на код сюда - @lex_draven

#задача #марафон
Кодинг-марафон. Решение Задачи 6

Варианты написания функции для преобразования телефонных номеров можно посмотреть на сайте наших партнеров из pythonist.ru.

Смотреть решения

Условие конкурса в закрепе канала.

#задача #марафон
Кодинг-марафон. Задача № 7.

Условия конкурса - в закрепленной сверху записи канала.

Приз: 10 баллов.

Задание:

Напишите функцию, которая будет возвращать True, если строка, являющаяся аргументом функции, содержит возрастающие И последовательные числа. Например, ‘123’ (1-2-3) или ‘101112’ (10-11-12).

Сигнатура — def ascending(value: str) -> bool:

Примечания:

- Функция должна возвращать (не печатать!) только True\False, она не должна бросать исключений.
- Предполагается, что строка-аргумент никогда не пустая и всегда содержит минимум 2 числа, например ’10’ — валидная строка.
- Строка-аргумент будет содержать только числа.

Примеры:

ascending("232425") ➞ True
# строку можно представить как 23, 24, 25, а эти числа следуют друг за другом по возрастанию

ascending("2324256") ➞ False
# шестерка в конце ломает возрастающий ряд

ascending("444445") ➞ True
# строку можно представить как 444 и 445

Присылаем номер задачи и ссылку на код сюда - @lex_draven

#задача #марафон
Кодинг-марафон. Решение Задачи 7

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

Смотреть решение

Условие конкурса в закрепе канала.

#задача #марафон
Кодинг-марафон. Задача № 8.

Условия конкурса - в закрепленной записи канала.

Приз: 10 баллов.

Задание:

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

Если 2-й аргумент не передан, все вложенные списки должны быть распакованы.

Сигнатура: def flatten(a_list:list, depth:int=0)->list

Примечания:

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

Примеры:

flatten([1, [2, 3]]) ➞ [1, 2, 3]
flatten([1, [2, [3]]], depth=1) ➞ [1, 2, [3]]
flatten([1, [2, [3]]], depth=2) ➞ [1, 2, 3]
flatten([1, [2, 3]], depth=100) ➞ [1, 2, 3]

Присылаем номер задачи и ссылку на код сюда - @lex_draven

#задача #марафон
Кодинг-марафон. Решение Задачи 8

Код функции для распаковки вложенных списков можно посмотреть на сайте наших партнеров из pythonist.ru.

Смотреть решение

Условие конкурса в закрепе канала.

#задача #марафон
Кодинг-марафон. Задача № 9.

Условия конкурса - в закрепленной записи канала.

Приз: 10 баллов.

Задание:

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

    >> diamond('A')
A

>> diamond('B')
A
B B
A

>> diamond('D', '-')
---A---
--B-B--
-C---C-
D-----D
-C---C-
--B-B--
---A---

Сигнатура: def diamond(letter: str, background: str=' ') -> str:

Примечания:

- КАЖДАЯ строка рисунка заканчивается символом '\n',
- на вход может подаваться любая из 26 букв латинского алфавита и любой ASCII-символ как параметр background,
- предполагается, что ввод всегда валиден, не нужно проверок и исключений.

Присылаем номер задачи и ссылку на код сюда - @lex_draven

#задача #марафон
Кодинг-марафон. Решение Задачи 9

Код функции, возвращающей строку - ASCII-рисунок ромба, можно посмотреть на сайте наших партнеров из pythonist.ru.

Смотреть решение

Условие конкурса в закрепе канала.

#задача #марафон
Кодинг-марафон. Задача № 10

Привет, друзья! Наш марафон подошел к концу. Мы представляем вам последнюю, десятую задачу. Решения принимаются до 12:00 мск 26 августа.

Условия конкурса - в закрепленной записи канала.

Приз: 10 баллов.

Задание:

Для транспортирования материалов из цеха А в цех В используется конвейер. Материалы упаковываются в одинаковые контейнеры и размещаются на ленте один за одним в порядке изготовления в цехе А.

Каждый контейнер имеет степень срочности обработки в цехе В — float-значение, где наименьшее означает наивысший приоритет. То есть приоритет 1.0 должен выполняться раньше, чем 9.0.

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

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

- накопитель перемещает первый контейнер из ленты в цех В;
- накопитель перемещает первый контейнер из ленты в склад (в складе каждый следующий контейнер помещается на предыдущий);
- накопитель перемещает верхний контейнер из склада в цех В.

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

Сигнатура: def work(tasks: list) -> bool: принимает на вход список float и возвращает булин.

Ничего не импортируем, исключения не кидаем!

Примеры:

work([2.9, 2.1]) == True
work([5.6, 9.0, 2.0]) == False
work([ ]) == True
work([1, 1, 1]) == True

Присылаем номер задачи и ссылку на код сюда - @lex_draven

#задача #марафон
Кодинг-марафон. Решение Задачи 10

Код программы для определения возможности упорядочивания контейнеров можно посмотреть на сайте наших партнеров из pythonist.ru.

Смотреть решение

Условие конкурса в закрепе канала.

#задача #марафон
Привет, друзья! Наш кодинг-марафон подошел к концу!

Призовые места распределились следующим образом:

1 место - @kqk_05
2 место делят два человека - @levpoz и @zlata_t1998
3 место - @mr_storm

Поздравляем победителей!

Борьба была довольно напряженной. В марафоне приняли участие больше 100 человек, чему мы очень рады! 53 участника решили пять и больше задач. Все 10 задач решили 26 марафонцев, еще пятеро решили по 9 задач.

Самой популярной задачей оказалась Задача 4 - ее решили 64 человека. Последнюю, десятую задачу решили 32 участника.

Мы рады, что марафон побудил членов нашего сообщества общаться друг с другом и обсуждать решения. Пожалуй, это вообще самое важное в подобных мероприятиях: все обмениваются опытом и учатся у товарищей.

Надеемся, наш марафон вам понравился!

Команда Pythonboost

#марафон