Мини-проект: калькулятор индекса массы тела (ИМТ)

Мини-проект: калькулятор индекса массы тела (ИМТ) Переменные и типы данных

Привет! Теперь, когда мы изучили переменные, типы данных, преобразование типов и условия, пора собрать всё вместе и создать настоящий проект.

В этой статье мы создадим калькулятор индекса массы тела (ИМТ) — полезную программу, которая поможет пользователю оценить свой вес.

Что нужно знать перед началом

Для этого проекта тебе понадобится:

  • Установленный Python
  • Знание переменных, типов данных, преобразования типов, условий

Совет: Постарайся сначала написать программу самостоятельно, а потом сравни с моим решением.

Основная часть

Что такое ИМТ и как его считать

ИМТ (индекс массы тела) — это величина, которая позволяет оценить, соответствует ли масса человека его росту.

Формула расчёта:

ИМТ = вес / (рост * рост)

Где:

  • вес в килограммах
  • рост в метрах

Интерпретация ИМТ

ИМТИнтерпретация
Меньше 18.5Дефицит массы тела
18.5 — 24.9Норма
25 — 29.9Избыточная масса тела
30 и большеОжирение

Совет: Это лишь приблизительные значения. Для точной оценки нужно учитывать возраст, пол, мышечную массу и другие факторы.

Пошаговое создание программы

Шаг 1. Запросить рост и вес

height = float(input("Введите ваш рост в метрах: "))
weight = float(input("Введите ваш вес в килограммах: "))

Шаг 2. Рассчитать ИМТ

bmi = weight / (height * height)

Шаг 3. Определить категорию

if bmi < 18.5:
    category = "дефицит массы тела"
elif 18.5 <= bmi < 25:
    category = "норма"
elif 25 <= bmi < 30:
    category = "избыточная масса тела"
else:
    category = "ожирение"

Шаг 4. Вывести результат

print(f"Ваш ИМТ: {bmi:.2f}")
print(f"Категория: {category}")

Полный код (базовая версия)

height = float(input("Введите ваш рост в метрах: "))
weight = float(input("Введите ваш вес в килограммах: "))

bmi = weight / (height * height)

if bmi < 18.5:
    category = "дефицит массы тела"
elif 18.5 <= bmi < 25:
    category = "норма"
elif 25 <= bmi < 30:
    category = "избыточная масса тела"
else:
    category = "ожирение"

print(f"Ваш ИМТ: {bmi:.2f}")
print(f"Категория: {category}")

Улучшенная версия (с обработкой ошибок)

try:
    height = float(input("Введите ваш рост в метрах: "))
    weight = float(input("Введите ваш вес в килограммах: "))

    if height <= 0 or weight <= 0:
        print("Ошибка: рост и вес должны быть положительными числами.")
    else:
        bmi = weight / (height * height)

        if bmi < 18.5:
            category = "дефицит массы тела"
        elif 18.5 <= bmi < 25:
            category = "норма"
        elif 25 <= bmi < 30:
            category = "избыточная масса тела"
        else:
            category = "ожирение"

        print(f"Ваш ИМТ: {bmi:.2f}")
        print(f"Категория: {category}")

except ValueError:
    print("Ошибка: введите числа, а не текст.")

Полный код (с рекомендациями)

print("=" * 40)
print("   Калькулятор индекса массы тела (ИМТ)")
print("=" * 40)

try:
    height = float(input("Введите ваш рост (в метрах): "))
    weight = float(input("Введите ваш вес (в килограммах): "))

    if height <= 0 or weight <= 0:
        print("Ошибка: рост и вес должны быть положительными числами.")
    else:
        bmi = weight / (height * height)

        if bmi < 18.5:
            category = "дефицит массы тела"
            advice = "Рекомендуется набрать вес. Обратитесь к врачу."
        elif 18.5 <= bmi < 25:
            category = "норма"
            advice = "Отличный результат! Поддерживайте здоровый образ жизни."
        elif 25 <= bmi < 30:
            category = "избыточная масса тела"
            advice = "Рекомендуется снизить вес. Сбалансируйте питание и добавьте физическую активность."
        else:
            category = "ожирение"
            advice = "Рекомендуется обратиться к врачу и разработать план снижения веса."

        print("=" * 40)
        print(f"Ваш ИМТ: {bmi:.2f}")
        print(f"Категория: {category}")
        print(f"Рекомендация: {advice}")
        print("=" * 40)

except ValueError:
    print("Ошибка: введите числа, а не текст.")

Задачи для закрепления

Задача 1. Запусти программу и проверь её работу с разными значениями. Используй код выше.

Задача 2. Добавь в программу проверку на то, что рост указан в метрах (не должен быть больше 3 метров).

Задача 3. Добавь в программу дополнительную категорию для ИМТ < 16.

Задача 4. Добавь возможность ввода роста в сантиметрах (программа должна переводить в метры).

Задача 5. Добавь цикл, чтобы программа не закрывалась после одного расчёта. Выведи сообщение благодарности за использование программы.

Ответы:

Задача 2

# Задача 2
if height <= 0 or height > 3:
    print("Ошибка: рост должен быть от 0 до 3 метров.")

Задача 3

if bmi < 16:
    category = "выраженный дефицит массы тела"
elif 16 <= bmi < 18.5:
    category = "дефицит массы тела"
elif 18.5 <= bmi < 25:
    category = "норма"
elif 25 <= bmi < 30:
    category = "избыточная масса тела"
else:
    category = "ожирение"

Задача 4

height_cm = float(input("Введите ваш рост в сантиметрах: "))
height = height_cm / 100

Задача 5

while True:
    height = float(input("Введите ваш рост в метрах: "))
    weight = float(input("Введите ваш вес в килограммах: "))
    # ... расчёт ...
    again = input("Хотите рассчитать ещё раз? (да/нет): ")
    if again.lower() != "да":
        break
print("Спасибо за использование калькулятора!")

Нюансы и подводные камни

Неправильный ввод

Если пользователь введёт буквы вместо чисел — программа упадёт с ValueError. Мы обработали это с помощью try-except.

Отрицательные числа

Рост и вес не могут быть отрицательными. Мы добавили проверку height <= 0 or weight <= 0.

Неправильные единицы измерения

Пользователь может ввести рост в сантиметрах вместо метров. Можно добавить подсказку или автоматическое преобразование.

Частые ошибки и как их избежать

Ошибка 1: Забыл обработать ввод

Всегда используй try-except при работе с числами от пользователя.

Ошибка 2: Не проверяешь границы

Проверяй, что значения имеют смысл (рост > 0, вес > 0).

Ошибка 3: Используешь = вместо ==

В условиях всегда ==, а не =.

Шпаргалка

Что нужноКак пишется
Запросить ростheight = float(input("..."))
Запросить весweight = float(input("..."))
Рассчитать ИМТbmi = weight / (height * height)
Проверить на нольif height <= 0 or weight <= 0:
Вывести с двумя знакамиf"{bmi:.2f}"
Обработать ошибкуtry: … except ValueError:

Заключение / Выводы

Сегодня мы:

  • Создали полноценный проект на Python
  • Научились рассчитывать ИМТ
  • Добавили обработку ошибок
  • Разобрали интерпретацию результата

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×