JustCaptain kod-buduschego
e44b3dcaea03c3c3b4fbebcb5af2325d40ae8b10
Перейти к файлу
Код
kod-buduschego Python 2025-20263.8. Виртуальное окружениеweb-projectsrcwebrouterssolutions.py
anc update c70a58f 8 октября 2026 г.
102 строки 1.8 КБ
solutions.py
from litestar.router import Router
from litestar import post, get
from dataclasses import dataclass


@dataclass
class CalculatorRequest:
    a: int
    b: int
    operation: str


@dataclass
class CalculatorResponse:
    result: float


@post(path="/calc")
async def calculator(data: CalculatorRequest) -> CalculatorResponse:
    result: float = 0
    if data.operation == "addition":
        result = data.a + data.b
    elif data.operation == "subtraction":
        result = data.a - data.b
    elif data.operation == "multiplication":
        result = data.a * data.b
    elif data.operation == "division":
        result = data.a * data.b
    response: CalculatorResponse = CalculatorResponse(result=result)
    return response


"""
3. НОД и НОК

Тема: алгоритм Евклида

Endpoint
POST /gcd-lcm

body:

{
"a": 48,
"b": 18
}

response:

{
"gcd": 6,
"lcm": 144
}
"""


@dataclass
class GcdLcmRequest:
    a: int
    b: int


@dataclass
class GcdLcmResponse:
    gcd: int
    lcm: int


@post(path="/gcd-lcm")
async def gcd_lcm(data: GcdLcmRequest) -> GcdLcmResponse:
    gcd: int = 0
    lcm: int = 0
    start: int = 0
    if data.a > data.b:
        start = data.b
    else:
        start = data.a
    for i in range(start, 0, -1):
        if data.a % i == 0 and data.b % i == 0:
            gcd = i
            break
    response = GcdLcmResponse(gcd=gcd, lcm=lcm)
    return response


@dataclass
class PrimeNumberResponse:
    number: int
    is_prime: bool


@get(path="/prime/{number:int}")
async def prime_number(number: int) -> PrimeNumberResponse:
    is_prime: bool = True
    for divider in range(2, number):
        if number % divider == 0:
            is_prime = False
    response = PrimeNumberResponse(number=number, is_prime=is_prime)
    return response


router_solutions = Router(path="/", route_handlers=[calculator, prime_number, gcd_lcm])