Перейти к содержимому

Калькулятор алкоголя в крови

Оцените содержание алкоголя в крови (BAC) по напиткам, весу и времени.

Об этом инструменте

Содержание алкоголя в крови (САК) — это показатель процентного содержания алкоголя в кровотоке и критический показатель алкогольного опьянения. Этот калькулятор САК оценивает уровень алкоголя в вашей крови на основе количества потребленного алкоголя, вашего веса, пола и времени, прошедшего с момента начала употребления алкоголя. Понимание вашего предполагаемого САК помогает вам принять обоснованное решение о том, безопасно ли вам управлять автомобилем, эксплуатировать машины или заниматься другой деятельностью, требующей ясности ума.

Чтобы использовать этот калькулятор, введите количество стандартных порций алкоголя, которые вы потребили, ваш вес, выберите ваш пол (что влияет на метаболизм алкоголя) и укажите, сколько времени прошло с момента начала употребления. Калькулятор использует формулу Видмарка, широко признанный в судебной науке и общественном здравоохранении метод, для оценки вашего САК. Помните, что это оценка — фактический САК варьируется в зависимости от таких факторов, как потребление пищи, скорость обмена веществ, крепость напитка и уровень гидратации.

Результаты предоставляются только в образовательных целях и целях снижения вреда и никогда не должны использоваться в качестве правовой защиты или вместо алкотеста. Многие юрисдикции устанавливают законные пределы вождения (обычно 0,08% во многих странах), и алкотесты полиции — единственный надежный метод правоприменения. Всегда ставьте безопасность на первое место: если вы употребляли алкоголь, воспользуйтесь такси, назначенным водителем или сервисом совместных поездок вместо того, чтобы полагаться на оценку.

Часто задаваемые вопросы

Реализация кода

def calculate_bac(
    drinks: list[dict],
    weight_kg: float,
    gender: str,
    hours_elapsed: float
) -> float:
    """
    Estimate Blood Alcohol Content using the Widmark formula.
    BAC = (alcohol_grams / (weight_kg * r * 10)) - (0.015 * hours)
    r = 0.68 for male, 0.55 for female

    drinks: list of {"abv": float (%), "volume_ml": float}
    WARNING: For estimation only. Never use to determine fitness to drive.
    """
    r = 0.68 if gender.lower() == "male" else 0.55
    total_alcohol_grams = sum(
        d["volume_ml"] * (d["abv"] / 100) * 0.789  # ethanol density = 0.789 g/ml
        for d in drinks
    )
    bac = (total_alcohol_grams / (weight_kg * r * 10)) - (0.015 * hours_elapsed)
    return max(bac, 0.0)

# Example: 80kg male, 2 beers (5%, 355ml), 1 hour elapsed
drinks = [
    {"abv": 5, "volume_ml": 355},
    {"abv": 5, "volume_ml": 355},
]
bac = calculate_bac(drinks, weight_kg=80, gender="male", hours_elapsed=1)
print(f"Estimated BAC: {bac:.4f}%")  # ~0.0367%

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.