Андрей Востриков | Собеседование Junior Python разработчик | Задача на черный и белый список.

  Рет қаралды 40,666

Андрей += Пронин

Андрей += Пронин

2 жыл бұрын

Ваш 👍 ПОДПИСКА 🔔 - мотивируют продолжать вести канал. Смотрите и комментируйте.
Не смотря на то, что задачка не вполне решилась, очень хорошее впечатление. Кажется интервью про то, как Андрей нашёл новую работу -- не за горами.
Решение задачи: (не смотрите, если хотите решить самостоятельно)
Неэффективное решение:
bad = ['fk', 'dk', 'sk']
good = ['good', 'nice']
def shimpfen(text):
for bad_word in bad:
if bad_word in text:
return 'Проверка не пройдена'
for good_word in good:
if good_word in text:
return 'Проверка пройдена'
return 'Проверка не пройдена'
text1 = 'fk apple'
text2 = 'apple good'
text3 = 'fk apple good'
text4 = 'pear ff orange'
assert shimpfen(text1) == 'Проверка не пройдена'
assert shimpfen(text2) == 'Проверка пройдена'
assert shimpfen(text3) == 'Проверка не пройдена'
assert shimpfen(text4) == 'Проверка не пройдена'
Хорошее решение:
def shimpfen(text):
if set(text.split()).intersection(bad) == set() and set(text.split()).intersection(good) != set():
return 'Проверка пройдена'
return 'Проверка не пройдена'
🔔ПОДПИСЫВАЙТЕСЬ:🔔
🔗Вконтакте: CaptPronin
🔗Facebook: / proninc

Пікірлер: 143
@PythonDevelopment
@PythonDevelopment 2 жыл бұрын
bool(set()) - остальное дело техники Спасибо большое за интересное интервью. Тоже скоро буду пытаться подавать заявки на HH
@itCODE
@itCODE 2 жыл бұрын
Круто! Лайк)
@Vasile4e4ek
@Vasile4e4ek 2 жыл бұрын
Не знаю, задавали ли этот вопрос, но почему вы без чипсов?
@zotkin
@zotkin Жыл бұрын
Хах, ждал такого коммента
@AndyPronin
@AndyPronin 2 жыл бұрын
Отдельное спасибо Владимиру Талпа за идею для задачки из реальной жизни. Лайк, комментарий, подписка и колокольчик - очень важны для развития канала. Не стесняйтесь нажимать.
@jackmorrison4219
@jackmorrison4219 2 жыл бұрын
Спасибо за все ваши интервью) Благодаря им понимаю, что спокойно пройду любой собес на джуна. Просмотр таких штук позволяет реально оценить свои знания и успеть пофиксить пробелы до реального собеса.
@AndyPronin
@AndyPronin 2 жыл бұрын
Рад, что нравится
@GamerBrosGK
@GamerBrosGK 2 жыл бұрын
Имей в виду что в реальности это всё намного сложнее. Волнение никто не отменял. Там можно что угодно забыть
@sergs2919
@sergs2919 2 жыл бұрын
@@GamerBrosGK на мой взгляд... тут надо не сковываться а делать с кодом и решать задачу как и на работе. Я думаю бы решил бы эту задачу любой если бы проверки бы поставил перекрёстные нашёл бы проблему. Где условие не срабатывает.. Вообще плохо так говорить я не знаю и опускать руки... В программинге сдаваться нельзя... Тут борьба до победы должна быть
@mkalalaka
@mkalalaka Жыл бұрын
@@sergs2919 не совсем. во первых на реальном собесе есть тяжелый пресс по времени. когда дают задачу, подразумевается, что он должна быть решена минут за десять-пятнадцать, а в проекте вам и полдня и день можно выделить, как заэстимируете. во вторых, умение признать что не можешь решить задачу и пора идти просить о помощи тоже ценится. как раз джуны часто попадаются на том, что упираются в стену лбом, боятся просить помощи и тормозят работу. в скраме это быстро всплывает на дейликах. как только человек репортит, что он уже третий день делает двухчасовую задачу, это повод поинтересоваться, в чем проблема и как помочь.
@slaviknnov
@slaviknnov Жыл бұрын
Согласен, почему то всегда мимо пролистывал такие видео, а тут решил посмотреть. Я сам самоучка и никогда не работал программистом, думал что меня даже Джуном не возьмут, а оказывается я на мидла могу претендовать) ну и понял что нужно подтянуть алгоритмы (не было особо необходимости в них, поэтому не вникал) и работу с git
@9206446
@9206446 2 жыл бұрын
Вот сейчас интересно было. Адекватный, живой и достаточно подготовленный соискатель.
@AndyPronin
@AndyPronin 2 жыл бұрын
Почти уверен, что скоро буде с ним записывать видео про то, что он нашёл работу)
@mkalalaka
@mkalalaka Жыл бұрын
@@AndyPronin так он вроде работает. довольно странно воспринимает скрам, но явно имел с ним дело. а так, вполне вменяемый джун. при наличии более синьорных разработчиков в коллективе и хоть какой то проектной документации вполне потянет. он явно уже имеет навык работы в команде, а скилы тут вторичны.
@sergioostanioni5390
@sergioostanioni5390 2 жыл бұрын
Про числа, скорее всего, дело в симметрии, те тот же вопрос можно отнести к любой цифре и получим аналогичный ответ. Про списки, хотя в Питоне "не в зуб ногой", но там совсем тривиально.
@dmitrysmirnovit
@dmitrysmirnovit 2 жыл бұрын
Про 7-ки почему-то в голову сразу пришла мысль про поиск по шаблону - регулярные выражения
@user-uv2mh7qy5h
@user-uv2mh7qy5h 2 жыл бұрын
Про 7-ки: можно так решить: total7 = reduce(lambda a, x: a + ('7' in str(x)), range(1000))
@TheHorushka
@TheHorushka 2 жыл бұрын
Я задумался, а можно ли ответ с сермеркой сразу назвать, чтобы был вау-эффект. На ум начали приходить формулы комбинаторики "сочетания с повторениями" (а может, вообще надо сначала на размещения смотреть?) или количество перестановок семёрки в трехразрядных числах, где остальные разряды - любые, затем сложить с перестановками семёрок в двухразрядных числах. Но хотелось какой-то очень простой способ. И когда в интервью сказали "я тебя подразмял" у меня случилось озарение, и я сразу нашёл ответ. Итак, у нас есть алфавит №1 - для любых чисел, он состоит из множества {0, 1, 2, ...7, 8, 9}. Количество образуемых им чисел, логично, 10**3 = 1000 (это с учётом стартовой вариации "000", которую мы временно зря включили - в условии счёт ведётся с единицы). А что если мы посчитаем другое число? Не сколько чисел содержат семёрку, а наоборот - "сколько чисел НЕ содержат семёрку"? Очень просто - это будет алфавит №2, содержащий {0, 1, 2, ...6, 8, 9} - где все числа, кроме семёрки. Количество таких чисел 9**3 = 729 (и там тоже есть "000"). Количество чисел "с семерками" - равно "общее количество чисел" (10**3) минус "количество чисел без семёрок" (729). 1000 - 729 = 271 По поводу комбинации "000" переживать не надо, она "аннигилировалась" в разности чисел. Задним умом или в комментариях на ютубе все умные. А вот можно ли на реальном собесе сходу ответить - большой вопрос. Надёжнее решения "в лоб" ничего не придумаешь.
@PythonDevelopment
@PythonDevelopment 2 жыл бұрын
Щикарно =))
@ares946
@ares946 2 жыл бұрын
Спасибо!)
@alexanderkurenyshev7828
@alexanderkurenyshev7828 2 жыл бұрын
но не верно ( в числе 777 содержатся три числа 7, а в вашем случае не учтено это вот код на питоне и вывод: counter = 0 for i in range(1,1000): counter += list(str(i)).count('7') print(counter) 300
@lellel5521
@lellel5521 2 жыл бұрын
@@alexanderkurenyshev7828 Задачу внимательнее прослушайте/прочитайте
@alexanderkurenyshev7828
@alexanderkurenyshev7828 2 жыл бұрын
@@lellel5521 можете конкретно сказать что упустил?
@volodymyrmatiievskyi3777
@volodymyrmatiievskyi3777 2 жыл бұрын
Видео полезно. В идеале, хотелось бы иметь более четкие формулировки заданий. Особое спасибо Николаю на многое открывает глаза. Что касается решения от авторов, то вызов два раза set(text.split()) не самое лучшее решение, напрягает название функции читать такой код через 1 месяц будет сложно.
@slaviknnov
@slaviknnov Жыл бұрын
Про intersection функцию не знал, я б сделал проверку if words&good and not words&bad
@axalix
@axalix Жыл бұрын
Чтобы народ тут примерно понимал уровень интервью в Amazon / senior dev, вопрос о фильтрах в тексте предполагает, что вы будете использовать (или хотя бы ее вспомните) структуру данных Trie, которая предназначена для поиска по тексту. Разбиение текста по пробелам и сохранение в массив, убьет половину ваших баллов. Обязательным условием успешного прохождения будет ваша оценка сложности алгоритма (по памяти и времени). И еще одно, слова "blacklist / whitelist" в FAANG не приветствуются: лучше говорить "allowlist / disallowlist". Всем удачи!
@AndyPronin
@AndyPronin Жыл бұрын
Спасибо за комментарий. Если есть желание, с большим удовольствием записал бы с тобой интервью
@justman073
@justman073 Ай бұрын
А использование регулярных выражений прокатит? Например, итерация по re.compile(r'\w+').finditer(text)
@user-el1ep5ip6o
@user-el1ep5ip6o 2 жыл бұрын
Народ я только осваиваю основы языка и в задаче "C числами содержащими 7" написал такой перебор используя for и if, ну а для подсчета общего кол-ва цифр можно их добавлять в список вместо печати и в конце подсчитать длину списка, да? m = 3.5 for n in range(1000): if n / 2 == m: print(n) n += 1 m += 5 elif n // 10 == 7 or n // 100 == 7 or (n // 100 > 7 and 70
@luka63003
@luka63003 Жыл бұрын
Не знаю по поводу скорости, но я бы решил так counter = 1 for i in range(1000): if '7' in str(i): counter += 1 print(counter) Если через логику В каждой десятке есть одно число с 7, кроме седьмого десятка, там таких чисел 10 В сотке всего 19 чисел, в которых есть 7 Но в 7 сотке в каждом числе есть 7, значит ещё 100 чисел Теперь в общем виде 19*9 + 100 = 20*9 - 9 + 100 = 180 - 9 + 100 = 271 чисел с 7
@sergs2919
@sergs2919 2 жыл бұрын
Ради интереса допилил его вариант решения задачи)) Главное его упущение было в том что при проверки массива GOOD на элементе ab у него выпадало не правильное сообщение. Надо было сначала все значения проверить потом выводить что Проверка не пройдена. Немного переделал)) Встроенными функциями конечно кода значительно меньше было бы bad = ['a', 'b', 'c'] good = ['good'] def shimp(text): c = 1 t = 0 for word in text.split(): if word in bad: c = 0 elif word in good: t = 1 if c == 1 and t == 1 : return 'Проверка пройдена' else: return 'Проверка не пройдена' text1 = 'a f' text2 = 'ab good' text3 = 'a d good' text4 = 'ab d bad' assert shimp(text1) == 'Проверка не пройдена' assert shimp(text2) == 'Проверка пройдена' assert shimp(text3) == 'Проверка не пройдена' assert shimp(text4) == 'Проверка не пройдена'
@pereulok28
@pereulok28 2 жыл бұрын
сперва проверяем вхождение в хорошие слова, и если не прошли эту проверку - сразу можно вываливаться с "не пройдено". в противном случае начинаем проверять на плохие слова и там уже два возможных исходы - пройдено/не пройдено
@Misha-775
@Misha-775 Жыл бұрын
Сойдёт) Но это если уж сильно-сильно нужно решить) Решение покрасивее: def Check(text): If any(word in ban for word in text) or not any(word in need for word in text): return 'Не пройдено' return 'Пройдено'
@s1ep0k
@s1ep0k Жыл бұрын
@@Misha-775 текст ещё засплитить забыл)
@jimmycool3696
@jimmycool3696 Жыл бұрын
Решил задачу, как по мне - более быстрым способом, выглядит неплохо: bad = ['a','b','c'] good = ['good'] text = "it's so good i can't imagine!" def filter(text): if set(text.split()).intersection(bad): return False else: return bool(set(text.split()).intersection(good)) print(filter(text))
@snek985
@snek985 2 жыл бұрын
К задаче про количество чисел, в записи которых есть хотя бы одна семерка: Сам сразу подумал про комбинаторное решение для n-разрядных чисел, которое выглядит так: 10^n - 10^(n - 1) (от общего количество n-значных чисел) отнимаем 8*9^(n - 1) (на первое место ставим любое из 10-х чисел, кроме 0 и 7, на остальные места - любое, кроме 7), тогда получим искомое количество для n-значных чисел, остается просто сложить результат для всех n разрядов. В нашем случае n = log(10, 1000) = 3. Но если бы попросили найти количество таких чисел от 1 до 1100, то уже все, что я пишу неактуально. Предположим, что хотим найти количество чисел от 1 до 10 ^ n, содержащих в своей записи хотя бы 1 7-ку, тогда: Σ (i = 1, n) = (10^ 1 - 10 ^ 0 - 8 * 9 ^ 0) + (10^2 - 10^1 - 8 * 9) + (10 ^ 3 - 10 ^ 2 - 8 * 9 ^ 2) + ... + (10 ^ (n - 1) - 10 ^ (n -2) - 8 * 9 ^ (n -2)) + (10 ^ n - 10^(n - 1) - 8 * 9 ^ (n-1)); Уже можно заметить, что почти все здесь сокращается, кроме 10 ^ n - 8 *(9^(n-1) + 9 ^ (n - 2) + ... + 9 ^ 0) - 10 ^ 0 = 10 ^ n - 1 - 8 * (9^4 - 1) / (9 - 1) = 10 ^ n - 9 ^ n. Докажем формулу по индукции: Пусть S = Σ (i = 1, n) = (10^ 1 - 10 ^ 0 - 8 * 9 ^ 0) + (10^2 - 10^1 - 8 * 9) + (10 ^ 3 - 10 ^ 2 - 8 * 9 ^ 2) + ... + (10 ^ (n - 1) - 10 ^ (n -2) - 8 * 9 ^ (n -2)) + (10 ^ n - 10^(n - 1) - 8 * 9 ^ (n-1)), тогда формула для n + 1: Σ (i = 0, n + 1) = S + 10 ^ (n + 1) - 10 ^ n - 8 * 9 ^ n = 10 ^ (n + 1) - 9 ^ (n + 1) = > = > S - 10 ^ n - 8 * 9 ^ n = - 9 ^ (n + 1); 10 ^ n - 9 ^ n - 10 ^ n - 8 * 9 ^ n = - 9 ^ (n + 1); - 9 ^ (n + 1) = - 9 ^ (n + 1), ч.т.д. Для задачи ответом будет 10^3 - 9^3 = 271.
@PythonDevelopment
@PythonDevelopment 2 жыл бұрын
Супер)
@BritScientist
@BritScientist 2 жыл бұрын
@@PythonDevelopment А я решал так. Если в сотнях у нас семерка, то возможно по 10 вариантов для десятков и единиц. Это 100 чисел. Если семерка в десятках, то, чтобы не повторяться, мы можем 9 способами выбрать цифру в сотнях (уже нельзя брать "7") и десятью в единицах. Это ещё 90 чисел. Когда семерка в разряде единиц, мы, во избежание повторов, не выбираем в сотнях и десятках семерку, остается по 9 вариантов для сотен и десятков. Получаем ещё 81 число. В итоге 100 + 90 + 81 = 271.
@spawlovable
@spawlovable Жыл бұрын
# Собственно, функция def check_words(txt: str, b_list: set, w_list: set) -> bool: txt_set = set(txt.split()) return bool(not b_list.intersection(txt_set) and w_list.intersection(txt_set)) # Тесты black_list = {'dark', 'black', 'difficult'} white_list = {'good', 'white', 'light'} test1 = 'dark is not white' test2 = 'light is good' test3 = 'some text' test4 = 'some good text' print(check_words(test1, black_list, white_list)) print(check_words(test2, black_list, white_list)) print(check_words(test3, black_list, white_list)) print(check_words(test4, black_list, white_list))
@vkav3598
@vkav3598 Жыл бұрын
Вроде в bool переводить смысла нет, итак ответ в функции будет Boolean
@comparison9436
@comparison9436 2 жыл бұрын
задача по семерке простой алгоритм. Если единицы, там одна 7. Если десятки, там 10 десятков с 7 (10) и один десяток с 7 (10-1). В итоге 19. И так далее, это набрать в коде 1-2 минуты.
@__Goodwin__
@__Goodwin__ Жыл бұрын
Вопрос был не про код, а про логику. Возьмем в столбик числа от 000 ... 999. В разряде единицах цифра 7 каждая 10я, всего 1000/10=100 шт. в десятках 10 шт на 100 единиц( 70, 71 ..) т.е. 100 шт на 1000 в сотнях 100шт (с 700 по 799) 100+100+100= 300, а вы можете писать код дальше 😄
@smbatadamyan220
@smbatadamyan220 Жыл бұрын
@@__Goodwin__ только там ты 77 посчитал и в третий разряд и во второй. А 777 вообше во всех 3 посчитал.
@comparison9436
@comparison9436 Жыл бұрын
@@smbatadamyan220 пусть он дальше думает что умный. Не мешай)
@luka63003
@luka63003 Жыл бұрын
​@@__Goodwin__ задача была не про количество семерок в 1000, а количество чисел, в которых есть 7
@user-iw2er3xy5k
@user-iw2er3xy5k 2 жыл бұрын
Спасибо за такие видосики. Очень познавательно и полезно. black_list = ['a', 'b', 'c'] white_list = ['good'] def bad_words_checker(text): success_flag = False words_list = text.split() for word in words_list: if word in black_list: success_flag = False break elif word in white_list: success_flag = True return ['Проверка не пройдена', 'Проверка пройдена'][success_flag] text_string1 = 'a f' text_string2 = 'ab good' text_string3 = 'a d good' text_string4 = 'ab d bad' assert bad_words_checker(text_string1) == 'Проверка не пройдена' assert bad_words_checker(text_string2) == 'Проверка пройдена' assert bad_words_checker(text_string3) == 'Проверка не пройдена' assert bad_words_checker(text_string4) == 'Проверка не пройдена' или black_list = ['a', 'b', 'c'] white_list = ['good'] def bad_words_checker(text): words_list = set(text.split()) if not set(black_list) & words_list and set(white_list) & words_list: return 'Проверка пройдена' else: return 'Проверка не пройдена' text_string1 = 'a f' text_string2 = 'ab good' text_string3 = 'a d good' text_string4 = 'ab d bad' assert bad_words_checker(text_string1) == 'Проверка не пройдена' assert bad_words_checker(text_string2) == 'Проверка пройдена' assert bad_words_checker(text_string3) == 'Проверка не пройдена' assert bad_words_checker(text_string4) == 'Проверка не пройдена'
@artembelskiy435
@artembelskiy435 Жыл бұрын
Мужик на собеседовании был слишком серьезный. А Пронин и Коля прям добрые, с ними можно без этого)
@user-io7oh1eb2t
@user-io7oh1eb2t 2 жыл бұрын
Тесты не правильные. Иначе такое решение тоже проходит: def ch(txt): for x in txt.split(): if x in a: return 'не пройдена' if x in b: return 'пройдена' return 'не пройдена'
@Misha-775
@Misha-775 Жыл бұрын
Интересная логика у товарища, однако) Я бы реализовал функцию проверки так: (Если нас устраивает ХОТЯ БЫ 1 хорошее слово) def Check(text): If any(word in ban for word in text) or not any(word in need for word in text): return 'Не пройдено' return 'Пройдено' (Если нас устраивают только ВСЕ хорошие слова из массива в тексте) def Check(text): If any(word in ban for word in text) or not all(word in text for word in need): return 'Не пройдено' return 'Пройдено'
@user-wd7rx2nw2q
@user-wd7rx2nw2q 2 жыл бұрын
На самом деле является ли предложенное решение оптимальным? Поскольку в тексте также присутствуют знаки препинания, то есть входной текст может содержать: "his programming style is bad.", "I'm bad, but I want to be better". Тогда в нашем множестве будут именно слова "bad.", "bad,", то есть они выдадут False.
@Misha-775
@Misha-775 Жыл бұрын
Решение товарища в принципе неправильно, а по поводу знаков препинания - предполагается, на мой взгляд, что это должно лежать на совести подающего в функцию данные)
@comparison9436
@comparison9436 2 жыл бұрын
есть ли у вас вакансии стронг джуна/мидл? удаленно! Закончил МГУ, казах.
@MrLotrus
@MrLotrus 2 жыл бұрын
С маленьким значением плохих слов ( меньше 20 примерно) неэффективное решение в 3 раза быстрей эффективного из описания. При это текст может быть большим - тестил на тексте из 500 000 слов. А вот с большим количеством плохих слов дейсвительно оптимальное решение начинает рвать неоптимальное. Удалось ещё раза в два ускорить эффективное решение, сплитя и создавая сет заранее. Но и так неэффективное быстрей на малом количестве проверочных слов. def check_text(text): spl_text = set(text.split()) if spl_text.intersection(bad) == set() and spl_text.intersection(good) != set(): return 'Проверка пройдена' return 'Проверка не пройдена' А если представить ещё, что частота встречи плохих слов неоднородная и строить проверочный список так, чтобы самые частые слова были в начале, то неэффективный алгоритм может ещё как потягаться за право быть использованным.
@AndyPronin
@AndyPronin 2 жыл бұрын
Тут речь просложность алгорима больше. А про скорость работы даже.
@gamebazar6453
@gamebazar6453 Жыл бұрын
Первое задание не корректно выполнено. При таком коде, если задать первую букву передаваемого на вход текста, из тех которые есть в списке, а после нее сделать пробел, например подаваемый текст "a d", то такой код будет выводить True, хотя слова "a d" в списке нет.
@AndyPronin
@AndyPronin Жыл бұрын
О как. Говорила мне мама, пиши больше тестов(
@user-bd7vv9kw5r
@user-bd7vv9kw5r Жыл бұрын
Очень жалко смотреть на банальную ошибку в табуляции🥺
@slava_slider
@slava_slider 2 жыл бұрын
дело было в отступе последнего return
@user-jk7os4ls3n
@user-jk7os4ls3n 2 жыл бұрын
решение в одну строку (any(ele in text.split() for ele in good)) and (any(ele in text.split() for ele in bad))
@user123456789098
@user123456789098 2 жыл бұрын
В одну строку проще и быстрее будет работать так: return len(set(text.split()).intersection(set(good))) > 0 and len(set(text.split()).intersection(set(bad))) == 0
@karington1168
@karington1168 Жыл бұрын
Мои соболезнования вашим коллегам, которые этот код будут читать
@kholodovgames6294
@kholodovgames6294 Жыл бұрын
bad = ['a', 'b', 'c'] good = ['good'] def filter_foo(string): work = set(i.strip(',.') for i in string.split()) return set(good).issubset(work) and work - set(bad) == work print(filter_foo('a dfdf, fvff. good'))
@MrArkelas
@MrArkelas Жыл бұрын
Про семёрки это вообще не по программированию задача. Количество чисел, где есть семёрка = 1000 минус количество чисел, где нет ни одной семёрки. А это 9^3. Значит ответ: 1000 - 9^3.
@ibrahimoglu
@ibrahimoglu 2 жыл бұрын
👍
@user-qb7ht3nu4j
@user-qb7ht3nu4j Жыл бұрын
Интересно, как сложилась судьба Андрея спустя 7 месяцев
@BritScientist
@BritScientist Жыл бұрын
В функции shimpfen изначально ошибка. Return False должно быть на отступ левее. В предложенном варианте мы проверяем только первый символ.
@aleksandrpetrovsky828
@aleksandrpetrovsky828 Жыл бұрын
Слава богу нашёл подобный коммент, я уже подумал я совсем далёк от питона раз даже интервьюер не поправил эту тупость. Сижу просто сейчас на джаве и всё происходящее выглядело как какой-то сюр
@jen24499
@jen24499 Жыл бұрын
bad = {'a', 'b', 'hello'} #disallow good = ['good'] #allow def check(inp): if set(inp.split()).intersection(bad) or good[0] not in inp: return False return True
@user-jd4rl7im6d
@user-jd4rl7im6d 2 жыл бұрын
Апдейт: вот наилучшее решение задачи с белым/черным списком: def text_validator(text, white_list, black_list): text, white_list, black_list = set(text.split()), set(white_list), set(black_list) if len(text.intersection(white_list)) > 0 and len(text.intersection(black_list)) == 0: return True else: return False
@user-qx8qe8gb6o
@user-qx8qe8gb6o Жыл бұрын
У меня похожее решение, только чуток попроще: def words_checker(text): check_whites = [word for word in text.split() if word in white_list] check_blacks = [word for word in text.split() if word in black_list] if len(check_whites) > 0 and len(check_blacks) == 0: return 'Проверка пройдена' else: return 'Проверка не пройдена'
@vkav3598
@vkav3598 Жыл бұрын
Хе хе школьник 9 класс, сразу вспомнил про пересечение множеств. А вообще задачи легкие( и с 7, и с списками). Сейчас поступаю в колледж, думаю после него работу будет не сложно найти
@AndyPronin
@AndyPronin Жыл бұрын
Монжества. таки да. Найдёшь - приходи на канал. Расскажешь как и что)
@vkav3598
@vkav3598 Жыл бұрын
@@AndyPronin Обязательно!
@anyalozgacheva8203
@anyalozgacheva8203 2 жыл бұрын
блин дело такое, я школьник, готовлюсь к экзамену по информатике, конечно же я не знаю как работают базы данных и все сложные и непонятные для меня штуки, о котором разговаривают не в практической части собеседовния, но..... все задачки для меня такие легкие, серьезно.....
@AndyPronin
@AndyPronin 2 жыл бұрын
Круто, что твои знания на таком уровне. Подкачайся немного, и сможешь найти работу. Если не секрет, где учился программировать?
@bfdhtfyjhjj
@bfdhtfyjhjj 2 жыл бұрын
Проблема решения задачки в том что последний return находился в теле цикла.
@ArenGorman
@ArenGorman 2 жыл бұрын
Хоть кто-то заметил
@prosto_pro_o
@prosto_pro_o 2 жыл бұрын
Проблема решения задачки ещё и в том, что она проверяет только первый элемент и после этого уже будет один из return
@user-jk7os4ls3n
@user-jk7os4ls3n 2 жыл бұрын
в одну строку (any(ele in text.split() for ele in good)) and (any(ele in text.split() for ele in bad))
@VGCor
@VGCor 2 жыл бұрын
Изначальная проблема в том, что отступ не равен 4 пробелам. Удивился, что за это не сделали замечание.
@bonrg208
@bonrg208 2 жыл бұрын
Что за компания?
@qwerty-ln9uq
@qwerty-ln9uq Жыл бұрын
req=input().split(' ') a=['a','b','c'] b=['good'] if b[0] in req: flag = True else: flag = False def filter(req): f=None for i in req: if i in a and flag: f='yes' elif i in a and flag==False: f='no' if f==None: f='no' return f print(filter(req)) понимаю, решение странное, но оно работает) я в 10 классе и это то, как я вижу решение
@Misha-775
@Misha-775 Жыл бұрын
Ну типа) Я бы сделал функцию: def Check(text): If any(word in ban for word in text) or not any(word in need for word in text): return 'Не пройдено' return 'Пройдено' Понимаешь, твое решение хорошо тем, что его можно реализовать на любом ЯП, а питон именно хорош тем, что код можно упростить чрезмерно. В любом случае, 👍)
@mkalalaka
@mkalalaka Жыл бұрын
а если в тексте запятые и точки?
@Misha-775
@Misha-775 Жыл бұрын
@@mkalalaka С этим нужно уже более подробно и конкретно работать)
@Happy-rj7om
@Happy-rj7om Жыл бұрын
Мне такая реализация в голову пришла Если правльно понял задачу bad = ['a', 'b', 'c'] good = ['d', 'e', 'f'] def profanity_filter(text): return all(map(lambda x: x not in bad, text.split())) and any(map(lambda x: x in good, text.split())) Вернет True, если ни одного слова в bad и хотя бы одно слово в good, в противном случае False
@luka63003
@luka63003 Жыл бұрын
Тот самый монстр из кодварс
@RomanSl-wx8ru
@RomanSl-wx8ru 2 жыл бұрын
Интересно, а с рынком то что в декабре? В чем закономерность?
@AndyPronin
@AndyPronin 2 жыл бұрын
Рынок в декабре тухнет. Вакансий меньше. Офферов меньше.
@user-ko7fn8fp7e
@user-ko7fn8fp7e Жыл бұрын
В феврале, рынок воостановиться :)
@AndyPronin
@AndyPronin Жыл бұрын
Если не будет форс-мажора ( ну... Тут такое
@comparison9436
@comparison9436 2 жыл бұрын
Это же было очевидно, что в функции проверяется всегда только первое слово, на остальные слова ему по барабану. Он ретернит сразу ответ, я заметил это еще в тот момент, когда он набирал этот код. Надо думать же перед тем как писать код.
@KrassRome
@KrassRome 2 жыл бұрын
Я решил так: import re a = ['a', 'b', 'c'] b = ['good'] def filter(text: str) -> bool: if not any([re.search(r"\b{}\b".format(word), text) for word in a]) and any([re.search(r"\b{}\b".format(word), text) for word in b]): return True return False if __name__ == "__main__": print(filter('simple textb good'))
@user-ci1yy9lc8f
@user-ci1yy9lc8f Жыл бұрын
bad = ["a", "b", "c"] good = ["good","sss"] test = "d good" test1 = "a sss" test2 = "sss" test3 = "1 a" def z(x): f1 = any(map(lambda x: x in good, x.split())) f2 = any(map(lambda x: x in bad, x.split())) return "Тест пройден" if f1 == True and f2 == False else "Тест не пройден"
@Dev-qf7fg
@Dev-qf7fg 2 жыл бұрын
Наконец-то собес)
@AndyPronin
@AndyPronin 2 жыл бұрын
Их сразу два сегодня)
@sinchrotron
@sinchrotron 2 жыл бұрын
Вот это главный косяк петона :) один лишний пробел всё ломает
@AndyPronin
@AndyPronin 2 жыл бұрын
Хехе)
@BorisenkoV89
@BorisenkoV89 2 жыл бұрын
Здравствуйте, как попасть на такое собеседование?
@AndyPronin
@AndyPronin 2 жыл бұрын
Если всё получится, скоро будет розыгрыш среди подписчиков
@RoGadp
@RoGadp 2 жыл бұрын
А что за компания, в которую вы собеседуете ?
@AndyPronin
@AndyPronin 2 жыл бұрын
паучье чутье? Это виртуальная компания для тестовых собеседований
@smbatadamyan220
@smbatadamyan220 Жыл бұрын
А я могу расчитывать что пройду собеседование если на теоретические вопросы могу не ответить а вот задачи для меня легкие в логике и алгоритмах я хорош.
@AndyPronin
@AndyPronin Жыл бұрын
от конкретного человека зависит, кто будет принимать интервью. В Яндексе, например, кроме алгоритмов вообще ничего не спрашивают
@FenBender01
@FenBender01 2 жыл бұрын
Нет сил смотреть как соискатель впечатал лишний таб перед последним return и 15 минут не может понять почему его код не работает. Похоже собеседователь этот таб тоже не заметил.
@AndyPronin
@AndyPronin 2 жыл бұрын
В других видел такого нет)
@nat_YouTube
@nat_YouTube Жыл бұрын
Задача про 7ки Это комбинаторика Я бы считал подслучаи
@user-gh2sq4ps4o
@user-gh2sq4ps4o 2 жыл бұрын
а я так решил, хотя после того, как посмотрел ответ, я понимаю, что мое решение неэффективно: a = ['a', 'f', 'c'] b = ['good'] def filter(text): white = 'проверка не пройдена' for word in text.split(' '): if word in a: return 'проверка не пройдена' if word in b: white = 'проверка пройдена' return white
@AndyPronin
@AndyPronin 2 жыл бұрын
Теперь у тебя два решения)
@im_not_tequila
@im_not_tequila 2 жыл бұрын
def check(_string): parts = _string.split() if not set(parts).isdisjoint(bad_words): return 'bad' if not set(parts).isdisjoint(good_words): return 'good' return 'bad' # возьмите на работу плз после универа зп 14 рублей умираю
@user-ml7mg1jz3b
@user-ml7mg1jz3b 2 жыл бұрын
Так сложно найти работу? Почему?
@fidericofer1432
@fidericofer1432 2 жыл бұрын
Тайминги на видео делайте, невозможно так смотреть
@AndyPronin
@AndyPronin 2 жыл бұрын
учту. спасибо. но не всегда возможно. бывает, сильно занят на основной работе.
@user-jd4rl7im6d
@user-jd4rl7im6d 2 жыл бұрын
А у меня такое решение: def fltr(text): for word in set(text.split()): if word in bad or not in good: return 'Проверка не пройдена' return 'Проверка пройдена' Мне кажется оно нагляднее, чем с пересечением множеств. По эффективности не факт, что хуже.
@user-jd4rl7im6d
@user-jd4rl7im6d 2 жыл бұрын
пожалуй, оно даже эффективнее, ведь нет двойного создания множества set(text.split())
@dmitriynayanov6428
@dmitriynayanov6428 2 жыл бұрын
не пройдет тесты
@user-jd4rl7im6d
@user-jd4rl7im6d 2 жыл бұрын
@@dmitriynayanov6428 ну там очевидная опечатка, пропущено слово word в условии. Другое дело, я так подумал, что лучше вообще выкинуть превращение в множество. В абсолютном большинстве случаев алгоритм от этого станет быстрее, так как лучше сделать один проход по списку с повторами, чем делать еще один проход для создания множества. Вариант с множеством будет иметь смысл, только если по каким-то причинам мы знаем, что в тексте очень много повторений.
@user-jd4rl7im6d
@user-jd4rl7im6d 2 жыл бұрын
Итого будет так: def fltr(text): good = ['1', 'привет', 'лавр'] bad = ['evil', 'red'] for word in text.split(): if word in bad or word not in good: return 'Проверка не пройдена' return 'Проверка пройдена' assert fltr('1 привет') == 'Проверка пройдена' assert fltr('хай') == 'Проверка не пройдена' assert fltr('evil') == 'Проверка не пройдена' assert fltr('1 evil') == 'Проверка не пройдена'
@dmitriynayanov6428
@dmitriynayanov6428 2 жыл бұрын
@@user-jd4rl7im6d тест строки "хай привет" должен выдать, что проверка пройдена. Мне кажется этот код посыпется на этом тесте
@Ka6puo
@Ka6puo 2 жыл бұрын
а 777 за 1 считается или за 3?
@PaparacciRap
@PaparacciRap 2 жыл бұрын
1
@AlisaMusicFM
@AlisaMusicFM 2 жыл бұрын
Список - это не массив
@user-km2rq9kr1p
@user-km2rq9kr1p Жыл бұрын
"Этика это такое" с таким человеком работать не страшно?
@AndyPronin
@AndyPronin Жыл бұрын
Мы имеем в виду, что применение насилия .... проистекает из решения задушить эксплуататоров, помещиков и капиталистов; до тех пор, пока цель эта не будет достигнута, мы вольны применять экстраординарные методы ваша цитата Доклад о гражданской войне перед Всесоюзным Центральным исполнительным комитетом (2 февраля 1920 г.),
@user-km2rq9kr1p
@user-km2rq9kr1p Жыл бұрын
@@AndyPronin моя цитата? Умора! Реально считать, что вам пишит Ленин В.И.? На спиритический сеанс запишитесь!
@AndyPronin
@AndyPronin Жыл бұрын
@@user-km2rq9kr1p Теперь ясно, что подделка) Исторический материализм отрицает существоание духов. Эх. А могло и повезти
@user-km2rq9kr1p
@user-km2rq9kr1p Жыл бұрын
@@AndyPronin Капитан Пронин, сын майора Пронина? Это ты? Или его Папа? Силы вселенной, я общаюсь с мултяшным персонажем :) Или подделкой?
@AndyPronin
@AndyPronin Жыл бұрын
@@user-km2rq9kr1p Внук майора Пронина. ) Ловко ты раскусил меня
@leskurbas4893
@leskurbas4893 2 жыл бұрын
if i%10==7
@RoGadp
@RoGadp 2 жыл бұрын
schimpfen * )))
@Sergey-cz7ym
@Sergey-cz7ym Жыл бұрын
a = ['a', 'b', 'c'] b = ['good'] def check_text(text): in_a = False in_b = False for w in text.split(): in_a = w in a if not in_a else in_a in_b = w in b if not in_b else in_b return 'Проверка пройдена' if not in_a and in_b else 'Проверка не пройдена'
@dmitrysmirnovit
@dmitrysmirnovit 2 жыл бұрын
if re.search("[7]", str(i)): result.append(i)
@nyannyan8243
@nyannyan8243 2 жыл бұрын
Это, типа, задачка, чтобы фильтровать негативные и пропускать позитивные комментарии, вроде: "Классное казино, выиграл себе в нем катаракту, эпилепсию и возможность чудесно провести остаток жизни в долговой яме. Всем рекомендую!" restricted_words = ["обобрали", "разорен", "караул", "жулики", "разводилово", "Azino777"]
Buy Feastables, Win Unlimited Money
00:51
MrBeast 2
Рет қаралды 69 МЛН
Don’t take steroids ! 🙏🙏
00:16
Tibo InShape
Рет қаралды 18 МЛН
Из чего состоит ВСË?
33:00
Задний двор Айлашкерского
Рет қаралды 7 М.
Программирование. Ожидание - реальность.
0:37
Хьюстон у нас проблемы !
Рет қаралды 208 М.
Buy Feastables, Win Unlimited Money
00:51
MrBeast 2
Рет қаралды 69 МЛН