Войти Регистрация
Код-ревью

8. Оплата ЖКХ с комиссией

Лёгкая

Python · 21 строк

Клиент платит за квартиру: банк берёт комиссию 1 %, но не меньше 30 ₽, поставщику (управляющей компании) уходит сумма без комиссии. Отметьте строки с ошибками.

В работе: Платежи по QR-коду с квитанции и автоплатежи за ЖКХ.

Как проверяем Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
деньгиаргументы по умолчаниюHTTP-таймауты

Источник: на задачах Сбера: платежи поставщикам услуг. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.
  1. import requests
  2. GATE_URL = "https://gate.internal/providers/{}/pay"
  3. COMMISSION = 0.01
  4. MIN_COMMISSION = 30
  5. def pay_utilities(session, account, provider_id, amount, history=[]):
  6. fee = max(amount * COMMISSION, MIN_COMMISSION)
  7. total = round(amount + fee, 2)
  8. if account.balance < total:
  9. return {"status": "error", "message": "Недостаточно средств"}
  10. resp = requests.post(
  11. GATE_URL.format(provider_id),
  12. json={"account": account.number, "amount": total},
  13. )
  14. if resp.status_code == 200:
  15. account.balance -= total
  16. history.append({"provider": provider_id, "amount": total})
  17. session.commit()
  18. return {"status": "ok", "fee": fee, "history": history}