Все хорошо, я все еще ценю это.

имаю, что на это ответили, но я супер нуб. Я знаю, что это имеет отношение к мужчине / женщине, являющейся последовательностью, но я думал, что определил это? Как я могу получить расчет на работу?

num = int(input('Please enter number of standard drinks consumed:'))
while num <= 0:
    print ('Error: The number cannot be negative or zero.')
    num = int(input('Please enter number of standard drinks consumed:'))
weight = int(input('Please enter weight in pounds:'))
while weight <= 0:
    print ('Error: The weight cannot be negative or zero.')
    weight = int(input('Please enter weight in pounds:'))
time = int(input('Please enter number of hours since first drink:'))
while time <= 0:
    print ('Error: The time cannot be negative or zero.')
    time = int(input('Please enter number of hours since first drink:'))
gender = input('Please enter the sex male or female:')
male = 0.68
female = 0.55


B = -0.015 * time(2.84 * num / weight * gender)
print ('The BAC is', format(B, ',.2f'))
 coder16 сент. 2017 г., 17:03
Вы ничего не определили - чтоgender переменная может принимать значение, которое совпадает с именем другой переменной, ничего не значит,gender,male а такжеfemale совершенно разные переменные ...
 hoefling16 сент. 2017 г., 17:28
gender сохраняет некоторый текстовый ввод, а затем вы пытаетесь умножить число на этот текст позже. Это, очевидно, не будет работать. Сделатьgender чтобы быть числом, у вас есть пример этого в вашем фрагменте кода.
 Jonathan Periman16 сент. 2017 г., 18:55
Спасибо, я чувствую, что это должно было быть более очевидным. Я работал с Python только месяц, но все же ...

Ответы на вопрос(2)

постарайтесь сохранить правильные отступы. Например,while цикл должен выглядеть так:

weight = int(input('Please enter weight in pounds:'))
while weight <= 0:
    print ('Error: The weight cannot be negative or zero.')
    weight = int(input('Please enter weight in pounds:'))

time = int(input('Please enter number of hours since first drink:'))
while time <= 0:
    print ('Error: The time cannot be negative or zero.')
    time = int(input('Please enter number of hours since first drink:'))

По вашему мужскому или женскому коэффициенту. Вы не определили их. Вы просто создаете переменныеmale а такжеfemale и установите их в некоторые значения. Что вы хотите сделать, это:

gender = input('Please enter the sex male or female:')
gender_coeficients = {male: 0.68, female: 0.55}
B = -0.015 * time(2.84 * num / weight * gender_coeficients[gender])

Например, вы создали словарь с двумя ключами, каждый из которых соответствует одному полу, и соединили их со значениями коэффициентов. Те могут быть использованыdictionary[key] заявление (gender_coeficients[gender] в твоем случае). Было бы также полезно создатьif-else заявление, чтобы проверить, действительно ли пользователь набрал мужской или женский.

Если вас интересует, как должен выглядеть правильный код Python, проверьте:https://www.python.org/dev/peps/pep-0008/ Но самое главное, получайте удовольствие от кодирования.

 Jonathan Periman16 сент. 2017 г., 18:56
Спасибо за ответ. У меня есть намного больше, чтобы узнать о Python.
 Jonathan Periman16 сент. 2017 г., 18:58
Кроме того, у меня есть код с правильными отступами в Python, но я запутался с ним, когда отправил вопрос.
 Jonathan Periman17 сент. 2017 г., 16:32
Все хорошо, я все еще ценю это.
 BluePat16 сент. 2017 г., 19:00
@JonathanPeriman ой, в таком случае я прошу прощения за указание на это :-)
Решение Вопроса

в Python отступы используются для определения блока кода. Если не с отступом, строки следующиеwhile выполняются только один раз. Во-вторых, вам нужно будет преобразоватьgender переменная в правильное числовое значение (в зависимости от ввода пользователя) перед вычислением BAC. Наконец, я считаю, что вы хотите изменить расчет так, чтобы вы на самом делеумножения сtime переменная.

Вот пример, который демонстрирует, как исправить эти проблемы. Обратите внимание, что этот сценарий допускает несколько различных вариантов ввода данных пользователем и преобразует все в нижний регистр перед проверкой.gender:

gender = input('Please enter the sex male or female:').lower()
while gender not in ['m', 'f', 'male', 'female']:
    print ("Error: Gender must be male or female.")
    gender = input('Please enter the sex male or female:').lower()

if gender in ['male', 'm']:
    gender = 0.68
else:
    gender = 0.55

B = -0.015 * time * 2.84 * num / weight * gender
print ('The BAC is {0:.6f}'.format(B))

Я также позволил себе немного изменить форматированный вывод. Обратите внимание, что с Python 2.x вам нужно заменитьinput с участиемraw_input автоматически получитьgender значение в виде строки.

 Jonathan Periman19 сент. 2017 г., 00:28
Тьфу, спасибо большое, что я сделал отступ. И формула старая, но правильная, как мужчины и женщины. Вот и все, что мне нужно было исправить, чтобы покончить с этим щенком. Это должно было занять меньше дня.
 Jonathan Periman18 сент. 2017 г., 23:47
Это уравнение, данное мне, и коэффициенты, заданные учителем. Так что, даже если они не правы, это его проблема, лол. Я все перепроверю и, может быть, спрошу, что это кажется странным. Я проверяю себя против моего 110 фунтов GF, и ее был ниже ....
 Jonathan Periman17 сент. 2017 г., 16:54
Имеет ли значение, что я использую python 3, потому что когда я запускаю готовый код, он всегда идет с .55 ... Я не могу заставить его выбрать мужской.
 Matt P18 сент. 2017 г., 16:47
@JonathanPeriman Это не должно иметь значения. Я подозреваю, что вы не отступили от строки:gender=0.55, Если это не отступ, тоgender установить вif-else структура не используется. Кстати, мне интересно, если у вас есть правильное уравнение или правильные значения для каждого пола? По этим подсчетам, BAC всегда больше для мужчин в течение определенного времени / числа / веса ... Я думал, что это работает наоборот.

Ваш ответ на вопрос