Если текущее поведение считается контрактом, нельзя сразу «исправить» фильтры и вынести чтение из цикла: это может изменить вызовы БД, исключения и результат. Сначала нужны characterization-тесты.
Так что за требования "что и как должен делать этот код" нужно принимать то, как он по факту
Если текущее поведение считается контрактом, нельзя сразу «исправить» фильтры и вынести чтение из цикла: это может изменить вызовы БД, исключения и результат. Сначала нужны characterization-тесты.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Так что за требования "что и как должен делать этот код" нужно принимать то, как он по факту
сейчас работает.
db = Model()
def process(data): print("file size: " + str(len(data)))
users_lines = open("/opt/data/users.txt").read().splitlines() resultat = [] for stroka in users_lines: trasictions_lines = open("/opt/data/transactions.txt").read().splitlines() process(trasictions_lines) for str2 in trasictions_lines: parts = str2.split() is_valid = db.check_transaction( user_id=parts[3], change=parts[4], )
if not re.search("\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\s+\d+\s+\w+\s+\d+.\d+", str2):
continue
user_id = stroka.split()[0]
regdate = db.get_regdate(user_id)
if re.search("\d{4}-\d{2}-\d{2}", regdate) and re.search("\d+.\d+", parts[4]):
resultat.append(str2)
if len(resultat) > 0: print("match")
Ответ
Если текущее поведение считается контрактом, нельзя сразу «исправить» фильтры и вынести чтение из цикла: это может изменить вызовы БД, исключения и результат. Сначала нужны characterization-тесты.
Код вызывает check_transaction до проверки регулярного выражения, игнорирует is_valid, не сравнивает пользователя транзакции с пользователем внешнего цикла и допускает повторы resultat. Точка в числовом regex означает любой символ, а re.search допускает совпадение внутри строки. Эти особенности выглядят ошибками, но их изменение нарушит заданный контракт. Безопасно начать с переименования переменных и выделения функций с прежним порядком действий. Кеширование файла, перестановку валидации и использование is_valid согласуют отдельно. Model и импорт re в условии не показаны; их поведение нельзя придумывать.