🌸 До 14 мая скидка на курсы по Python от 15 000 до 30 000 рублей: ru.hexlet.io/link/wLBgoM 🔥 Бесплатный курс «Основы Python» от Хекслета. Начните в любое время: ru.hexlet.io/link/5Vq2jV ✅ Полезные вебинары по программированию каждую неделю: ru.hexlet.io/link/Uqrgvw 00:00:00 интро 00:00:20 занимался проектированием электростанций, обучился в августе 2023 и в январе 2024 устроился на работу 00:01:23 пугалки про магические часла 00:03:14 что такое транзакции в базе данных 00:05:03 зачем нужны базы данных 00:06:22 теоретическая задача: как найти записи по диапозону дат в очень старой базе данных 00:09:10 за сколько происходит поиск в бинарном дереве 00:11:10 что такое SOLID 00:13:08 типы данных в Python 00:17:50 асинхронность в Python 00:21:36 зачем в Python многопоточность 00:26:40 что такое Yeild 00:30:03 дескрипторы в Python 00:30:49 как в Django сделать join 00:32:30 строка содержит открывающиеся и закрывающиеся скобки, нужно проверить валидность 01:01:20 есть поезд, который едет с определённой скоростью из пункта A в пункт B и есть воробей, который летит в пункт B быстрее поезда, в пункте B разворачивается, летит обратно к поезду, снова разворачивается до пункта B и повторяет так до тех пор, пока поезд не окажется в пункте B. Сколько километров пролетит воробей в общем? 01:20:20 резюмируем 01:22:36 какие книги по Python прочитать 01:28:25 советы, если хочется уйти в сеньоры
задача про скобки def check_parentheses(_str: str) -> bool: dct = {'{': ')]', '(': ']}', '[': '})'} opening_bracket = 0 for i, bracket in enumerate(_str): if i != len(_str) - 1 and bracket in dct.keys() and not _str[i + 1] in dct[bracket]: opening_bracket +=1 else: opening_bracket -= 1 if opening_bracket < 0: return False return True
задача про скобки opened_sym=['(','[','{'] closed_sym=['}',']',')'] def check_brackets(st): open_brack=[i for i in st if i in opened_sym] close_brack=[i for i in st if i in closed_sym] return len(open_brack)==len(close_brack)
Это в общем и не буст даже. Просто возможность не заблокировать напрочь приложение, пока идёт длительное вычисления, периодически самостоятельно возвращая управление event loop'у.
Можно просто на динамически меняющимся счетчике решить если счетчик стал в какой то момент отрицательный то False, если он в конце остался 1 то тоже False ну а если в конце 0 то True
Задачу про скобки можно через рекурсию If _str[0] in open_brackets and _str[-1] in close_brackets: If PAIRS_Brackets[_str[0]]==_str[-1]: return check_brackets(_str[1:-1]) Ну и дописать условия выхода из рекурсии (if len(_str) == 1 or ==2 return True Плюс условия elif return False для условий записать Пиша с телефона тут не удобняк все расписать. Хотя перед кем я оправдываюсь, идите нах.й
Ахах, таким себя тупым почувствовал после задачи с воробьем. Посчитал каждую точку пересечения и сложил сходящийся ряд. А после того как досмотрел понял что птица будет летать вплоть до достижения поездом конца пути, а точки пересечения никто и не просил :D
Задача про скобки: CLOSE_BRACKETS = '}])' OPEN_BRACKETS = '{[(' PAIRS_BRACKETS = {'[]', '{}', '()'} def ckeck_brackets(s: str) -> bool: open_stack = [] close_stack = [] for bracket in s: if bracket in CLOSE_BRACKETS: if not open_stack: return False close_stack.append(bracket) elif bracket in OPEN_BRACKETS: open_stack.append(bracket) else: return False if open_stack and close_stack and (open_stack[-1] + close_stack[-1] in PAIRS_BRACKETS): open_stack.pop() close_stack.pop() if open_stack or close_stack: return False return True увидел потом решение до конца автора, да - 1 список close_stack - можно выкинуть. Про воробья еще не дослушал, но видя ехидную улыбку ведущего понял прикол, спойлерить не буду лишь намекну - время полета воробья нам уже известно из условия задачи :))) ржу не могу
def check_brackets(symbols: str) -> bool: result = [] hash_map = {')': '(', '}': '{', ']': '['} for i in symbols: if i in hash_map.values(): result.append(i) elif i in hash_map.keys(): if result == [] or result.pop() != hash_map[i]: return False return result == []
🌸 До 14 мая скидка на курсы по Python от 15 000 до 30 000 рублей: ru.hexlet.io/link/wLBgoM
🔥 Бесплатный курс «Основы Python» от Хекслета. Начните в любое время: ru.hexlet.io/link/5Vq2jV
✅ Полезные вебинары по программированию каждую неделю: ru.hexlet.io/link/Uqrgvw
00:00:00 интро
00:00:20 занимался проектированием электростанций, обучился в августе 2023 и в январе 2024 устроился на работу
00:01:23 пугалки про магические часла
00:03:14 что такое транзакции в базе данных
00:05:03 зачем нужны базы данных
00:06:22 теоретическая задача: как найти записи по диапозону дат в очень старой базе данных
00:09:10 за сколько происходит поиск в бинарном дереве
00:11:10 что такое SOLID
00:13:08 типы данных в Python
00:17:50 асинхронность в Python
00:21:36 зачем в Python многопоточность
00:26:40 что такое Yeild
00:30:03 дескрипторы в Python
00:30:49 как в Django сделать join
00:32:30 строка содержит открывающиеся и закрывающиеся скобки, нужно проверить валидность
01:01:20 есть поезд, который едет с определённой скоростью из пункта A в пункт B и есть воробей, который летит в пункт B быстрее поезда, в пункте B разворачивается, летит обратно к поезду, снова разворачивается до пункта B и повторяет так до тех пор, пока поезд не окажется в пункте B. Сколько километров пролетит воробей в общем?
01:20:20 резюмируем
01:22:36 какие книги по Python прочитать
01:28:25 советы, если хочется уйти в сеньоры
Спасибо за полезный ролик!
задача про скобки
def check_parentheses(_str: str) -> bool:
dct = {'{': ')]', '(': ']}', '[': '})'}
opening_bracket = 0
for i, bracket in enumerate(_str):
if i != len(_str) - 1 and bracket in dct.keys() and not _str[i + 1] in dct[bracket]:
opening_bracket +=1
else:
opening_bracket -= 1
if opening_bracket < 0:
return False
return True
Тоже покажу решение) (скобки через рекурсию)
brackets = {
'{': '}',
'[': ']',
'(': ')'
}
def check_brackets(string: str) -> bool:
if len(string) == 0:
return True
if brackets[string[0]] in string:
string = string.replace(brackets[string[0]], '', 1)
else:
return False
return check_brackets(string[1:])
Задачу про поезд и воробья же можно решить так?
def sparrow_distance(distance,sp_v,tr_v):
return (sp_v/tr_v)*distance
На задачку про воробья плотно попался
задача про скобки
opened_sym=['(','[','{']
closed_sym=['}',']',')']
def check_brackets(st):
open_brack=[i for i in st if i in opened_sym]
close_brack=[i for i in st if i in closed_sym]
return len(open_brack)==len(close_brack)
Плохо... даже на '}{' возвращает True
Вопрос к автору: а как питоновская многопоточность поможет ему бустануть вычисление числа Пи до миллиардного знака?
Она поможет не заблокировать эвентлуп
@@gaxeliy т.е. это буст относительно асинхронного выполнения, но не относительно обычного синхронного?
@@mihto5202 конкретно в этом кейсе - да
@@mihto5202 в данном кейсе - да
Это в общем и не буст даже. Просто возможность не заблокировать напрочь приложение, пока идёт длительное вычисления, периодически самостоятельно возвращая управление event loop'у.
Можно просто на динамически меняющимся счетчике решить если счетчик стал в какой то момент отрицательный то False, если он в конце остался 1 то тоже False ну а если в конце 0 то True
поиск в бинарном дереве будет линейный!
Интервьюер слабый, для логарифмического времени нужно чтобы дерево было сбалансированным, чего упомянуто не было.
Задачу про скобки можно через рекурсию
If _str[0] in open_brackets and _str[-1] in close_brackets:
If PAIRS_Brackets[_str[0]]==_str[-1]: return check_brackets(_str[1:-1])
Ну и дописать условия выхода из рекурсии (if len(_str) == 1 or ==2 return True
Плюс условия elif return False для условий записать
Пиша с телефона тут не удобняк все расписать.
Хотя перед кем я оправдываюсь, идите нах.й
😁
Ахах, таким себя тупым почувствовал после задачи с воробьем.
Посчитал каждую точку пересечения и сложил сходящийся ряд.
А после того как досмотрел понял что птица будет летать вплоть до достижения поездом конца пути, а точки пересечения никто и не просил :D
А я туда-сюда птичку гонял 🥲
Надо, кажется, налечь на математику
Задача про скобки:
CLOSE_BRACKETS = '}])'
OPEN_BRACKETS = '{[('
PAIRS_BRACKETS = {'[]', '{}', '()'}
def ckeck_brackets(s: str) -> bool:
open_stack = []
close_stack = []
for bracket in s:
if bracket in CLOSE_BRACKETS:
if not open_stack:
return False
close_stack.append(bracket)
elif bracket in OPEN_BRACKETS:
open_stack.append(bracket)
else:
return False
if open_stack and close_stack and (open_stack[-1] + close_stack[-1] in PAIRS_BRACKETS):
open_stack.pop()
close_stack.pop()
if open_stack or close_stack:
return False
return True
увидел потом решение до конца автора, да - 1 список close_stack - можно выкинуть.
Про воробья еще не дослушал, но видя ехидную улыбку ведущего понял прикол, спойлерить не буду лишь намекну - время полета воробья нам уже известно из условия задачи :))) ржу не могу
def check_brackets(symbols: str) -> bool:
result = []
hash_map = {')': '(', '}': '{', ']': '['}
for i in symbols:
if i in hash_map.values():
result.append(i)
elif i in hash_map.keys():
if result == [] or result.pop() != hash_map[i]:
return False
return result == []
"([)]" выйдет true, а должно быть false
Не говоря уже про "))(("
@@gaxeliy не так понял задачу, изменил решение )