Камититься в бесплатку не нормально! особенно таким ребятам, хорошо пишут, рука набита. Какие 40 тысяч не понятно) Не идите на такие деньги никогда. Это важно. Цените свой труд!
А как вы думаете, насколько важно писать чистый код, если это занимает больше времени? я сам недавно выбирал курсы по IT, рассматривал разные компании, но остановился на Skypro. Лично мне помогли их наставники, и я смог найти первого заказчика))
кажется что в начале надо было просто строчку из букв сделать и все "абв.." и на ее основе уже делать словарь. Понадобились пробелы? Добавил пробелы. Понадобились цифры? добавил цифры и не надо потом весь код переписывать думая куда там пробелы влепить и почему они не ставятся.
А нельзя просто для каждой задачи сделать свой словарь? Для полученя списка номеров букв из слова dict1 (ключ: значение) = (буква: число), а для полученя слова из списка чисел dict2 (ключ: значение) = (число: буква). Просто искать ключ по значению не очень удобно, а в нашем случае и числа и буквы алфавита не повторяются и могут быть ключами. И тогда функции станут прямо очень простыми: def str_to_lst(str, dict1): return [dict1.get(key) for key in str] def lst_to_str(lst, dict2): return "".join([dict2.get(key) for key in lst])
22:40 , я бы прежде чем переносить сервер хотябы для начала зашел в логер, возможно где-то происходит ошибка и логер уже верещит "страшными строчками" от каждого , кто столкнулся с ней.
# формируем словарь согласно первоначальной задачи, до того как барышня изменила задачу что бы сильно облегчить задачу chars = {number: chr(number) for number in range(1072, 1104)} # решение пробегаем по словарику, если находим ключ берем значение, а если нет то оставляем символ не тронутым def convert_string(any_string: str) -> str: return " ".join([str(ord(char)) if chars.get(ord(char)) else char for char in any_string]) if __name__ == '__main__': print(convert_string("привет? как дела?"))
Как по мне ее замечание к тз максимально адекватное и показывает глубокое понимание. Потому что сложность алгоритма сильно растет n^2, по сравнению с ее O(n) за 2n памяти. Умение предлагать свои поправки к тз, а не тупого выполнения показало ее с лучшей стороны
приветствую, а где посмотреть программу курса яндекс практикума? Там учат деплоить готовые проекты, работать с докером, фастапи или джанго может хоть основы взаимодействия бекенда и фронтенда, работа с базой. Или проще самому обучаться по книгам и сайтам?
Джанго посвящена существенная часть курса Python разработчика. Есть раздел про управление удаленным сервером с докером и т.п. FastAPI есть в расширенном варианте курса (дороже). Программы все есть на сайте Практикума. Но мой ответ со ссылкой ютуб тупо спрятал.
@@dmitriyb2438 привет 👋, набираешь Яндекс практикум и вуаля там все есть. По поводу докера и fast-api. Скажу так Яндекс даёт теорию, ставит задачу и сроки выполнения и дальше все сам. Какие то бэст практики не даёт. Из хорошего есть код ревью но по мне не всегда результат тот что ученик хотел бы увидеть. В моем случае я как раз хотел что бы мне показали как надо делать а не то что здесь плохо переделай. У Яндекса есть мидл python там как раз есть все что ты хочешь . только курс не для новичка, скорее для сильного джуна, который может работать самостоятельно и имеет азы проектирования средней сложности приложения.
Не кажется что вот такое оборванное тех задание только запутало кандидатов? Если бы подход к решению подобной задачи был построен итеративно, и четко разделялся между кандидатами, чтобы по завершению одной такски, следующий кандидат мог перейти к выполнению второй, имея у себя на руках хоть какие то данные (готовый словарь) и конкретную реализацию. А не представлять с чем им придется работать и не писать функцию наугад, с путаницей ключей/значений в этом же словаре?
В изначальной формулировке задачи фигурировали 33 буквы. Вангую, у вас недостача букв и утечка алфавита. Идея с ord очень хрупкая изначально, не понимаю, почему она вам понравилась.
@@AndyPronin Думаю да. Причём сгенерировать список можно с помощью ord(), а потом просто добавить "ё" в нужное место def create_code(): chr_list = [chr(x) for x in range(1072, 1104)] chr_list.insert(6, 'ё') abc_dict = {key: value for key, value in enumerate(chr_list, 1)} return abc_dict
RUSSIAN_ALPHABET: str = "".join(chr(code) for code in range(ord("а"), ord("я") + 1)) def encode(text: str) -> list[int | str]: """Encodes the text""" encoder: dict[str, int] = { letter: number for number, letter in enumerate(RUSSIAN_ALPHABET, 1) } encoded_text = [encoder.get(char, char) for char in text] return encoded_text def decode(encoded_text: list[int | str]) -> str: """Decodes the text""" decoder: dict[int, str] = { number: letter for number, letter in enumerate(RUSSIAN_ALPHABET, 1) } decoded_text = "".join(decoder.get(code, code) for code in encoded_text) return decoded_text
@@finemechanic у нас нет буквы ё, точнее она находится отдельно от алфавита. тут уж либо писать руками весь алфавит, либо жить с 32 буквами. но предусмотреть да, стоило
Для таких задач чем выдумывать велосипед, проще просто 33 клавиши в строку загнать руками за 10 секунд, и спокойно энумерейтом вернуть искомый словарь. Алфавит же русский масштабировать никто не планирует, н
Отличное решение! И то что буква ё не кодируется ничего страшного. Просто она как спец. символ отображается как есть в закодированном списке. В качестве оптимизации можно всё-таки обернуть получение словаря в функцию и передавать диапазон букв. Например, get_encoder_dict('A', 'Z'), get_encoder_dict('а', 'я') и т.д. Тогда решение получится более универсальным.
Задания лучшие наверное как то писать в чат им, или что то в этом роде, потому как очень много переспрашивали. А так все молодцы 🎉
Да. Хорошая идея. Спасибо
Камититься в бесплатку не нормально! особенно таким ребятам, хорошо пишут, рука набита. Какие 40 тысяч не понятно) Не идите на такие деньги никогда. Это важно. Цените свой труд!
Привет Никите Помидору, Лёне Петрову и прочим обитателям эльфийского леса!
А как вы думаете, насколько важно писать чистый код, если это занимает больше времени? я сам недавно выбирал курсы по IT, рассматривал разные компании, но остановился на Skypro. Лично мне помогли их наставники, и я смог найти первого заказчика))
Код читают чаще, чем пишут. Лучше писать чисто, что бы потом тебе или твоим коллегам не разбирать странное
Молодцы. Респект им, что помогают. Если захотят заглянуть на канал, буду рад пообщаться. Мой телеграм andpronin.
Начали нормалтно, а как писать ,то капец если честно, элементарная задача
столько пафоса, я работаю там и там и делаю то и то, а элементарные вопросы просто заганяют в ступор
хз где пафос, просто рассказали о себе, причем им это сказали рассказать)
Проверяю Naming - abc….
Попробуйте вызвать функцию
кажется что в начале надо было просто строчку из букв сделать и все "абв.." и на ее основе уже делать словарь. Понадобились пробелы? Добавил пробелы. Понадобились цифры? добавил цифры и не надо потом весь код переписывать думая куда там пробелы влепить и почему они не ставятся.
В принципе, решение) когда упёрлись в проблему, можно было рефакторниг предложить
А нельзя просто для каждой задачи сделать свой словарь? Для полученя списка номеров букв из слова dict1 (ключ: значение) = (буква: число), а для полученя слова из списка чисел dict2 (ключ: значение) = (число: буква). Просто искать ключ по значению не очень удобно, а в нашем случае и числа и буквы алфавита не повторяются и могут быть ключами. И тогда функции станут прямо очень простыми:
def str_to_lst(str, dict1):
return [dict1.get(key) for key in str]
def lst_to_str(lst, dict2):
return "".join([dict2.get(key) for key in lst])
22:40 , я бы прежде чем переносить сервер хотябы для начала зашел в логер, возможно где-то происходит ошибка и логер уже верещит "страшными строчками" от каждого , кто столкнулся с ней.
Доброго времени суток
# формируем словарь согласно первоначальной задачи, до того как барышня изменила задачу что бы сильно облегчить задачу
chars = {number: chr(number) for number in range(1072, 1104)}
# решение пробегаем по словарику, если находим ключ берем значение, а если нет то оставляем символ не тронутым
def convert_string(any_string: str) -> str:
return " ".join([str(ord(char)) if chars.get(ord(char)) else char for char in any_string])
if __name__ == '__main__':
print(convert_string("привет? как дела?"))
А если цифра в тексте? Как обратно декодировать?
Так же только в обратном порядке.
Как по мне ее замечание к тз максимально адекватное и показывает глубокое понимание. Потому что сложность алгоритма сильно растет n^2, по сравнению с ее O(n) за 2n памяти. Умение предлагать свои поправки к тз, а не тупого выполнения показало ее с лучшей стороны
когда новое видео ?)
на рутуб дублировать контент не планируете?
Да. На вк видео и рутуб
Печалька😢
Пройдитесь по строке, у словарика есть гет
Напомните им про get
на каком моменте?
приветствую, а где посмотреть программу курса яндекс практикума? Там учат деплоить готовые проекты, работать с докером, фастапи или джанго может хоть основы взаимодействия бекенда и фронтенда, работа с базой. Или проще самому обучаться по книгам и сайтам?
Джанго посвящена существенная часть курса Python разработчика. Есть раздел про управление удаленным сервером с докером и т.п. FastAPI есть в расширенном варианте курса (дороже).
Программы все есть на сайте Практикума. Но мой ответ со ссылкой ютуб тупо спрятал.
Ютуп не любит ссылки. Да. В целом поиском легко находится
@@dmitriyb2438 привет 👋, набираешь Яндекс практикум и вуаля там все есть. По поводу докера и fast-api. Скажу так Яндекс даёт теорию, ставит задачу и сроки выполнения и дальше все сам. Какие то бэст практики не даёт. Из хорошего есть код ревью но по мне не всегда результат тот что ученик хотел бы увидеть. В моем случае я как раз хотел что бы мне показали как надо делать а не то что здесь плохо переделай. У Яндекса есть мидл python там как раз есть все что ты хочешь . только курс не для новичка, скорее для сильного джуна, который может работать самостоятельно и имеет азы проектирования средней сложности приложения.
Зачем переводить все в список,можно пробегать по строке
Тут нет единствено верного варианта. Задача на собесе не задачку решить, а посмотреть, как человек думает
Скуфчик совсем обленился и собесит сразу двух
Пустая строка
Мда уж…
Не кажется что вот такое оборванное тех задание только запутало кандидатов?
Если бы подход к решению подобной задачи был построен итеративно, и четко разделялся между кандидатами, чтобы по завершению одной такски, следующий кандидат мог перейти к выполнению второй, имея у себя на руках хоть какие то данные (готовый словарь) и конкретную реализацию. А не представлять с чем им придется работать и не писать функцию наугад, с путаницей ключей/значений в этом же словаре?
В изначальной формулировке задачи фигурировали 33 буквы. Вангую, у вас недостача букв и утечка алфавита. Идея с ord очень хрупкая изначально, не понимаю, почему она вам понравилась.
А какая лучше? Список из букв?
@@AndyPronin Думаю да. Причём сгенерировать список можно с помощью ord(), а потом просто добавить "ё" в нужное место
def create_code():
chr_list = [chr(x) for x in range(1072, 1104)]
chr_list.insert(6, 'ё')
abc_dict = {key: value for key, value in enumerate(chr_list, 1)}
return abc_dict
@@Vjqifg Явное лучше неявного, магические числа - лучше просто из списка букв.
@@Vjqifg магические числа это очень не ок
@@Hope-h7x Чем они здесь могут навредить?
print({i-1071: chr(i) for i in range(1072, 1104)})
как то так
RUSSIAN_ALPHABET: str = "".join(chr(code) for code in range(ord("а"), ord("я") + 1))
def encode(text: str) -> list[int | str]:
"""Encodes the text"""
encoder: dict[str, int] = {
letter: number for number, letter in enumerate(RUSSIAN_ALPHABET, 1)
}
encoded_text = [encoder.get(char, char) for char in text]
return encoded_text
def decode(encoded_text: list[int | str]) -> str:
"""Decodes the text"""
decoder: dict[int, str] = {
number: letter for number, letter in enumerate(RUSSIAN_ALPHABET, 1)
}
decoded_text = "".join(decoder.get(code, code) for code in encoded_text)
return decoded_text
assert len(RUSSIAN_ALPHABET) == 33, "Утечка алфавита"
@@finemechanic у нас нет буквы ё, точнее она находится отдельно от алфавита. тут уж либо писать руками весь алфавит, либо жить с 32 буквами. но предусмотреть да, стоило
@@4got10_man2 Я и говорю, алфавит строится с ошибкой.
Для таких задач чем выдумывать велосипед, проще просто 33 клавиши в строку загнать руками за 10 секунд, и спокойно энумерейтом вернуть искомый словарь. Алфавит же русский масштабировать никто не планирует, н
Отличное решение! И то что буква ё не кодируется ничего страшного. Просто она как спец. символ отображается как есть в закодированном списке.
В качестве оптимизации можно всё-таки обернуть получение словаря в функцию и передавать диапазон букв.
Например, get_encoder_dict('A', 'Z'), get_encoder_dict('а', 'я') и т.д. Тогда решение получится более универсальным.