Я новичок в python (и кодировании вообще и SOF). Недавно я поднял его, просмотрев некоторые онлайн-HTML, треки CSS на Treehouse и наслаждаясь ими до сих пор. Помимо хобби, моя общая цель состоит в том, чтобы иметь возможность писать собственные веб-приложения/программы, связанные с моей областью работы и обучения (здравоохранение).
Итак.. Мой вопрос связан с этим фрагментом кода, который я написал сегодня. Он представляет собой общий калькулятор ИМТ, а также включает в себя оценку оценки жировых отложений (на основе нескольких переменных, которые необходимо предоставить). Это ни в коем случае не 100% точный калькулятор жира% (вам понадобится DXA-сканирование, чтобы получить лучшую идею), хотя он отлично подходит для широкой публики.
Вопросы:
1) Как я могу убедиться, что пользователь может вводить несколько вещей в подсказку высот? Некоторые пользователи могут захотеть добавить 187, а другие - в 1.87. Как мне объяснить это и убедиться, что калькулятор все еще работает?
2) Нужно ли мне писать все эти заявления печати в моих функциях или есть более чистый/лучший способ написать эти функции?
3) Если я хочу, чтобы пользователь мог выбрать имперскую или метрическую систему? Как мне это сделать и нужно ли мне сделать 2 дополнительных функции?
Спасибо заранее и вот код (ps. Не против "странных" печатных сообщений :)):
# BMI calculator & fatpercentage estimator
#VARS
gender = input("What is your gender? Male or female? ")
age = input("How old are you? ")
length = float(input("What is your length in meters? Input should be: 1.80 for example. "))
weight = int(input("How much do you weigh (in KG)? "))
userinput_fatpercentage = int(input("What is your fatpercentage?\nReturn 0 (zero) if you don't know and want to calculate. "))
bmi = round(weight/(length*length), 2)
# BMI CALC
def bmi_calulation():
if bmi <= 18.5:
print("Your Body Mass Index is:", bmi, "start eating, skinny.")
elif bmi > 18.5 and bmi < 25:
print("Your Body Mass Index (BMI) is: ", bmi, "you are a normal person, thank god.")
elif bmi > 25 and bmi < 30:
print("Your Body Mass Index (BMI) is: ", bmi, "mind you... You are overweight. Drop some weight.")
elif bmi > 30:
print("Your Body Mass Index (BMI) is: ", bmi, "Hnnngggg..! You are insanely overweight. Stop eating right away!")
else:
print("There was an error with your input. Try again.")
# FAT% ESTIMATOR
def fatpercentage_calculation():
if userinput_fatpercentage == 0 and gender.lower() == 'male':
print("Your fatpercentage is: ")
print(round((1.2 * float(bmi) + (0.23 * float(age) - (10.8 * 1) - 5.4)), 2))
elif userinput_fatpercentage == 0 and gender.lower() == 'female':
print("Your fatpercentage is: ")
print(round((1.2 * float(bmi) + (0.23 * float(age) - (10.8 * 0) - 5.4)), 2))
elif userinput_fatpercentage == userinput_fatpercentage:
print("Your fatpercentage is: {}.".format(userinput_fatpercentage))
else:
print("Something went wrong. Try again. ")
#Output
bmi_calulation()
fatpercentage_calculation()
1) Вам не нужно беспокоиться о входах 1.87 против 187, так как вы указали формат в строке в качестве счетчиков. Было бы ошибкой пользователя, если бы они ввели cm в этом случае. Другой дизайн должен был спросить пользователя перед вопросом о высоте, хотят ли они использовать метры или см, пусть они выбирают, а затем внутренне в вашем коде использовать только один (конвертировать, если они выбрали другой).
2) Повторяющиеся части вы можете распечатать перед операциями if, а затем распечатать детали внутри операторов if, основанных на этом случае. Если вы не хотите использовать символы новой строки между двумя частями, вы можете использовать
print('.', end='')
для печати без создания новой строки.
3) Опять же, вы можете просто попросить пользователя об этом. Чтобы избежать написания двух одинаковых кодов для учета двух систем, вы можете внутренне преобразовать выбор пользователя в один из них и вычислить все (тогда вы можете конвертировать обратно для печати).