Не удается получить правильный вывод из калькулятора Python

#python

#python

Вопрос:

Я пытаюсь создать простой калькулятор python для расчета дозы лекарства.

Для образца весом 60 кг. Доза должна быть (60 * 15), разделенная на 80. Предполагаемый результат должен составлять 11,25 флакона.

Тем не менее, я получаю 7.575757575757576e 27. Пожалуйста, помогите мне диагностировать проблему здесь. Спасибо

Вот пример кода, который я использовал.

 # This is a program to calculate dose for IV Drug X

print('Hello Doctor!')

print('What is your name?')
myName= input()

print('It is good to meet you, ' 'Dr.'  myName)

print('What is the weight of patient?') # Patient weight
ptWeight = input()
print ('Number of vial is '   str(int((ptWeight)*15) / 80)  ' vials.')
  

И вот результат, который я получил.

 Hello Doctor!
What is your name?
Brian
It is good to meet you, Dr.Brian
What is the weight of patient?
60
Number of vial is 7.575757575757576e 27 vials.
  

Комментарии:

1. Вы умножаете строку на 15, что приводит к «60606060 …» и так далее. Сначала преобразуйте в int, затем умножьте.

2. Прочитайте эту статью для получения советов по отладке. Также обратите пристальное внимание на типы значений в вашем коде (например, str или int .

3. Также всегда будьте осторожны с тем, какие числа вы используете. В вашем коде неясно, как вы переходите от kg к vials. Вы можете объяснить в комментариях, или вы можете присвоить значения промежуточным переменным и использовать их, например dose_per_kg = 15 , или dose_per_vial = 80 . Это позволяет увидеть, что единицы измерения отменяются, как в kg * dose / kg = dose и dose / (dose / vial) = dose * vial / dose = vials .

Ответ №1:

Вы умножаете строку

Попробуйте это:

 print ('Number of vial is '   str(int(ptWeight)*15 / 80)  ' vials.')
  

Ответ №2:

Вы умножаете как жало. Попробуйте это вместо

 print('Hello Doctor!')

print('What is your name?')
myName= input()

print('It is good to meet you, ' 'Dr.'  myName)

print('What is the weight of patient?') # Patient weight
ptWeight = int(input())

vitals = round(int((ptWeight)*15) / 80,2)
print ('Number of vial is '  str(vitals)  ' vials.')
  

если вы хотите, чтобы значение было точным до десятичных знаков, используйте это

 vitals = int((ptWeight)*15) / 80
  

синтаксис функции round()

 round(number, places)