Python · 30 строк
Функция отдаёт выписку за период страницами по 50 операций. Приложение запрашивает page=1, page=2 и так далее, date_to приходит датой: «по 31 октября включительно».
Отметьте строки с ошибками.
В работе: Экран «Выписка» в приложении и выгрузка в PDF для визы или ипотеки.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: на задачах Т‑Банка: выписка в мобильном банке. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
import loggingfrom datetime import datetimelogger = logging.getLogger(__name__)PAGE_SIZE = 50def get_statement(conn, client, page, date_from, date_to):logger.info("Выписка для %s, телефон %s", client.full_name, client.phone)offset = page * PAGE_SIZEcur = conn.cursor()cur.execute("SELECT id, created_at, amount, description FROM operations ""WHERE account_id = %s AND created_at BETWEEN %s AND %s ""LIMIT %s OFFSET %s",(client.account_id, date_from, date_to, PAGE_SIZE, offset),)rows = cur.fetchall()items = []total = 0for op_id, created_at, amount, description in rows:total += amountitems.append({"id": op_id,"date": created_at.strftime("%d.%m.%Y %H:%M"),"amount": amount,"description": description,})return {"items": items, "page_total": total, "generated_at": datetime.now().isoformat()}