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

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

@aldrson
Download Telegram
Задача на логику. Бросаем яйца

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

При проведении эксперимента вы исходите из следующих допущений:

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

Для проведения экспериментов вы потратились и купили аж 2 яйца.

Какую стратегию вы будете использовать и сколько бросков в наихудшем случае вам придется совершить, чтобы найти искомый этаж?

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

#логическаязадача
Ответ к задаче "Бросаем яйца"

При оптимизированном решении в самом худшем случае потребуется 14 бросков. При бинарном поиске - 50.

#логическаязадача
Задачка для начинающих

Напишите программу для перевода значения температуры из градусов по Цельсию в градусы по Фаренгейту и обратно.

Формула: c/5 = f-32/9, где c - градусы по Цельсию, f - градусы по Фаренгейту.

Пишите ответы в комментариях, а мы свой вариант опубликуем завтра.

#coding #beginner
Тест. Списки и кортежи в Python

С помощью этого теста вы можете проверить, как хорошо вы знакомы со списками и кортежами. Эти типы данных — фундаментальны. Знать их должен каждый программист: и новичок, и опытный разработчик.

#тест
Задачка для начинающих. Ответ

temp = input("Введите температуру (например, 45F, 102C и т.п.): ")
degree = int(temp[:-1])
i_convention = temp[-1]

if i_convention.upper() == "C":
result = int(round((9 * degree) / 5 + 32))
o_convention = "по Фаренгейту"
elif i_convention.upper() == "F":
result = int(round((degree - 32) * 5 / 9))
o_convention = "по Цельсию"
else:
print("Температура введена в неверном формате.")
quit()
print("Температура", o_convention, "-", result, "градусов.")

#coding #beginner
Задача с кодом. Самое большое число в списке

Напишите функцию для поиска самого большого числа в списке целых чисел. Используйте при этом рекурсию (а метод max() не используйте).

Примеры:

find_highest([-1, 3, 5, 6, 99, 12, 2]) ➞ 99
find_highest([0, 12, 4, 87]) ➞ 87
find_highest([8]) ➞ 8

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

#задача #coding
Если нужны книги на русском языке по Python - подпишитесь и качайте в нашем канале @pythonknigi_backup
Топ. Конструкция match-case в Python

Начиная с версии 3.10 в языке Python наконец-то появилась конструкция switch-case, которая называется match-case.

С помощью выражения match-case можно избавиться от довольно громоздких цепочек if-elif-else.

#топ
Задача на логику. Градусы между стрелками

На часах 3 часа 15 минут, сколько градусов между стрелками?

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

#логическаязадача
Ответ к задаче "Градусы между стрелками"

1 час = 12 пятиминуток,
1 час = 360 градусов
одна пятиминутка — 360 / 12 = 30 градусов.

30 градусов разделить на 4 получается 7.5 градусов, это и есть угол между стрелками.

#логическаязадача
Задачка для начинающих

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

Например, пользователь ввел “lkseropewdssafsdfafkpwe”. Ожидаемый вывод:

В этой строке чаще всего встречаются следующие 3 символа:
[('s', 4), ('e', 3), ('f', 3)]

Пишите ответы в комментариях, а мы свой вариант опубликуем завтра.

#coding #beginner
Тест. Переменные и их свойства

Проверьте, хорошо ли вы понимаете суть переменных в Python.

#тест
Задачка для начинающих. Ответ

from collections import Counter

s = str(input("Введите строку: "))
print("В этой строке чаще всего встречаются следующие 3 символа:")
print(Counter(s).most_common(3))

#coding #beginner
Задача с кодом. Лишняя функция

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

Примеры:

f1 = redundant("apple")
f1() ➞ "apple"

f2 = redundant("pear")
f2() ➞ "pear"

f3 = redundant("")
f3() ➞ ""

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

#задача #coding
Задача на логику. Фальшивомонетчица

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

Вопрос: на какую сумму в общем итоге пострадал лавочник?

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

#логическаязадача
Ответ к задаче "Фальшивомонетчица"

Лавочник пострадал на 5 рублей.

#логическаязадача
Задачка для начинающих

Напишите программу для удаления всех элементов из заданного множества.

Пишите ответы в комментариях, а мы свой вариант опубликуем завтра.

#coding #beginner
Задачка для начинающих. Ответ

def remove_all_elements(num_set):
while num_set:
num_set.pop()
return num_set


num_set = set([0, 1, 3, 4, 5])
print("Исходное множество:")
print(num_set)
print("\nПосле удаления всех элементов:")
print(remove_all_elements(num_set))

#coding #beginner
Задача с кодом. Кирпич

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

Примечания:

- Кирпич можно поворачивать к отверстию любой стороной
- Считается, что кирпич можно вставить в отверстие, если его размеры равны размеру отверстия или меньше их
- Кирпич вставляется ровно, нельзя поставить его на ребро

Примеры:

does_brick_fit(1, 1, 1, 1, 1) ➞ True
does_brick_fit(1, 2, 1, 1, 1) ➞ True
does_brick_fit(1, 2, 2, 1, 1) ➞ False

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

#задача #coding
Задача на логику. Фокус с пятью картами

Фокусник берет колоду из 52 карт и отдает ее зрителям. Зрители выбирают (каким угодно способом) любые 5 карт и отдают их помощнику фокусника. Тот смотрит на карты и называет фокуснику 4 из них. В ответ фокусник называет пятую.

Кроме мастей и значений карт, фокусник вроде бы не получает никакой дополнительной информации (помощник говорит ровным голосом, без пауз и т.д.).

Каким образом фокуснику удается "угадать" пятую карту?

Решение тут. Просьба потратить хотя бы 10 минут перед тем как читать решение.

#логическаязадача
Задачка для начинающих

Напишите программу для сортировки списка словарей с использованием лямбда-функции.

Исходный список словарей:
[{'make': 'Nokia', 'model': 216, 'color': 'Black'}, {'make': 'Mi Max', 'model': '2', 'color': 'Gold'}, {'make': 'Samsung', 'model': 7, 'color': 'Blue'}]

Отсортированный список словарей:
[{'make': 'Nokia', 'model': 216, 'color': 'Black'}, {'make': 'Samsung', 'model': 7, 'color': 'Blue'}, {'make': 'Mi Max', 'model': '2', 'color': 'Gold'}]


Пишите ответы в комментариях, а мы свой вариант опубликуем завтра.

#coding #beginner