Задача.
Напишите программу для определения индекса массы тела.
На первый взгляд, это — простая задача.
Решение не сложно написать с помощью условий
if — elif -else.
Но она является задачей повышенной трудности.
Как написать решение задачи с помощью функции ?
Формулу для расчёта индекса массы тела нужно искать в Википеди.
id2746
Green Team
12.11.2016 433 644
m = float (input(‘Введите ваш вес: ‘)) h = float (input(‘Введите ваш рост в см: ‘)) h = h/100 #переводим в метры def index(m,h): index_mass = round(m / (h**2)) # формула из вики и округление print(‘Индекс массы тела равен: ‘, index_mass) index(m,h) #запуск функции
Последнее редактирование: 25.01.2020
DriveGlan
New member
25.01.2020 3 0
Напишите программу для определения индекса массы тела.
#Банер bannr = «»» ____ _ _ _ | __ ) ___ __| |_ _ _ __ ___ __ _ ___ ___ (_)_ __ __| | _____ __ | _ / _ / _` | | | | | ‘_ ` _ / _` / __/ __| | | ‘_ / _` |/ _ / / | |_) | (_) | (_| | |_| | | | | | | | (_| __ __ | | | | | (_| | __/> < |____/ ___/ __,_|__, | |_| |_| |_|__,_|___/___/ |_|_| |_|__,_|___/_/__ |___/ «»» print(bannr) #Формула m = float (input(«Введите ваш вес в кг: «)) h = float (input(«Введите ваш рост в см: «)) h = h/100 #переводим в метры index_mass = float(m / (h*h)) # формула из википедиа #Условия, сокращение до 2х знаков после запятой: if float(index_mass) < 16: print («Индекс тела равен:», «%.2f» % index_mass, «кг/м²», «и у Вас выраженный дефицит массы тела») elif float(index_mass) >= 16 and float(index_mass) = 18.5 and float(index_mass) = 18.5 and float(index_mass) = 25 and float(index_mass) = 30 and float(index_mass) = 35 and float(index_mass) = 40: print («Индекс тела равен:», «%.2f» % index_mass, «кг/м²», «и у Вас очень резкое ожирение!») #Таблица Tab = «»» ==================================================== |16 и менее Выраженный дефицит массы тела | |16—18,5 Недостаточная (дефицит) масса тела | |18,5—24,99 Норма | |25—30 Избыточная масса тела (предожирение) | |30—35 Ожирение | |35—40 Ожирение резкое | |40 и более Очень резкое ожирение | ==================================================== «»» print (Tab)
Прекрати писать код в ОДНОМ файле Python | ТОП 5 Ошибок и создание правильной архитектуры
Источник: codeby.net
Список покупок в Python
Я изучаю Python (и программирование в целом), делая небольшие программы. Ниже приведена основная программа покупок, которая выдаст список товаров для покупки на основе выбранной еды.
Я хотел бы улучшить его и позволить пользователю выбирать несколько продуктов одновременно (например, пользовательский ввод будет «1, 2, 3») и возвращать список ингредиентов на основе этого.
Какой подход я должен выбрать? Я использую Python 2.7 и вот мой существующий код:
18 Цикл while Python
mm_soup = [‘minced meat’, ‘potatoes’, ‘frozen vegetable’] sunday_soup = [‘chicken with bones’, ‘noodles’, ‘soup vegetable’] gulas = [‘pork meat’, ‘food cream’, ‘potatoes’, ‘onion’, ‘frozen peas’] print «What would you like to cook on weekend?» print «Here are the options:» print «1. Minced Meat Soup» print «2. Sunday Soup» print «3. Gulas» choose = raw_input(«> «) if choose == ‘1’: print «Buy», «, «.join(mm_soup) + «.» elif choose == ‘2’: print «Buy», «, «.join(sunday_soup) + «.» elif choose == ‘3’: print «Buy», «, «.join(gulas) + «.» else: print «Hmmm. No such food on the list.»
finspin 28 Май 2012 в 23:22
2 ответа
Лучший ответ
В вашем коде есть некоторые общие проблемы, поэтому давайте начнем с их исправления.
У вас есть несколько элементов, которые вы хотите представить пользователю, и вы жестко программируете эти значения. Это прилагает много усилий для вас, так как вы должны много повторяться. Посмотрите на выбранные вами строки, все они сводятся к одному и тому же. Вы также повторяете себя, определяя, на что ссылаются цифры в вашем описании и в вашем коде. Попробуем упростить это с помощью структуры данных.
Здесь мы составляем список всех опций — список кортежей, определяющих название и набор предметов для данной еды. Здесь мы используем набор, так как нам не нужно заказывать предметы.
options = [ («Minced Meat Soup», ), («Sunday Soup», ), («Gulas», ), ]
Это дает нам хорошую структуру данных для начала.
Затем мы можем задать наш вопрос, вместо того чтобы строить его вручную, мы можем построить его из нашего списка опций, используя цикл:
print «What would you like to cook on weekend?» print «Here are the options:» for option, (name, values) in enumerate(options, 1): print str(option)+». «+name
Обратите внимание на использование встроенной функции enumerate() , чтобы дать нам номера для вариантов. Так как вы хотите начать с 1, а Python обычно считает с 0, мы также передаем это.
Это дает нам наш вывод, но теперь мы можем легко добавить больше элементов без изменения существующего кода. Мы спрашиваем, как раньше, и затем вместо загрузки if / elif s мы можем просто получить индекс, который они нам дают из списка. Сначала мы должны изменить строку на число, а затем убрать его (так как Python считает от 0). Это дает нам:
_, values = options[int(choose)-1]
(Использование распаковки кортежей для игнорирования первого значения, так как это имя, которое нам не нужно).
Единственная проблема сейчас заключается в том, что произойдет, если пользователь, например, введет число вне диапазона или слово. Вы можете проверить это, прежде чем конвертировать в int и использовать его, но это Pythonic, чтобы просто попробовать и поймать выброшенные исключения при неудаче. Например:
try: _, values = options[int(choose)-1] print «Buy», «, «.join(values) + «.» except (IndexError, ValueError): print «Hmmm. No such food on the list.»
Это делает всю программу намного меньше, а также обратите внимание, как легко добавлять новые элементы, вы просто добавляете их в список.
Итак, как мы имеем дело с несколькими предметами? Ну, теперь это тоже довольно просто. Мы можем взять введенные пользователем данные, разделить их запятыми и убрать значения, чтобы удалить пробелы, а затем сделать то же самое, что мы делали раньше:
for choice in choose.split(«,»): choice = choice.strip() try: _, values = options[int(choice)-1] print «Buy», «, «.join(values) + «.» except (IndexError, ValueError): print «Hmmm. No such food on the list.»
Это работает, распечатывая несколько строк покупки, но это не оптимально, лучше было бы создать один большой список покупок, содержащий все необходимые предметы.
Самоучитель PYTHON
Самоучитель Python 3, собранный из материалов данного сайта. Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.
Оглавление:
- Возможности языка Python
- Первая программа. Знакомство со средой разработки IDLE
- Синтаксис
- Условный оператор if
- Циклы
- Ключевые слова, встроенные функции (для ознакомления, знать, как не стоит называть переменные)
- Числа
- Строки
- Работа со строками
- Функции и методы строк
- Форматирование строк
- Списки (массивы)
- Индексы и срезы
- Кортежи
- Словари
- Множества
- Функции
- Исключения и их обработка
- Байтовые строки
- Файлы
- With … as — менеджеры контекста
- Модули стандартной библиотеки
- Модуль os
- Модуль time
- Модуль random
- Модуль math
- Модуль sys
- Создание и подключение модулей
- Объектно-ориентированное программирование. Основы
- Инкапсуляция, наследование, полиморфизм
Комментарии
Я бы ещё добавил filter,map и лямбда-функции, ну и ООП
Администратор :
Лямбда-функции есть в разделе функции(14) и основы ООП(21)