Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код Python выдаёт ошибку ZeroDivisionError: float division by zero. И я никак не могу это обойти.

Николай Бессмертный Ученик (96), закрыт 3 года назад
Я писал код для калькулятора индекса массы тела. Но выскочила ошибка которую я 2 дня не могу исправить. Суть ошибки в том, что при вводе 0 в одну из переменных выскакивает выше упомянутая ошибка.

Код.
from colorama import init
from colorama import Fore, Back, Style

init()

print (Fore.BLACK)

print( Back.RED )

print (Style.DIM)

print("здравствуйте! Это калькулятор индекса массы тела")

a= float(input ("введи вес в кг: "))

if a <= (0):
print("вы не ввели число")
a= float(input ("введи вес в кг: "))

b= float(input ("введи рост в метрах: "))
if b <= (0):
print("вы не ввели число")
b= float(input ("введи рост в метрах: "))

if b == 0:
print("Упс, где-то ошибачка. Проверьте введённые числа")
print("вес " + str(a) + "рост" + str(b))
input

c = a / ( b * b )

round(c)

if c <= (1):
print("Упс, где то ошибочка. ваш индекс массы тела = 1")

elif c <= (16):
print(str(c) + " Ярко выроженный дефицит массы тела")

elif c <= (18):
print(str(c) + " Дефицит массы тела")

elif c <= (25):
print(str(c) + " Норма")

elif c <= (30):
print(str(c) + " Предожирение")

elif c <= (35):
print(str(c) + " Ожирение 1 степени")

elif c <= (40):
print(str(c) + " Ожирение 2 степени")

elif c >= (40):
print(str(c)+"Ожирение 3 степени")

input ("exit")
Лучший ответ
... Гений (84997) 4 года назад
Потому, что при вводе 0 у Вас _продолжаются_ вычисления. А надо было выходить, а не просто вывести сообщение.

c = a / (b*b) при b = 0 c = a / 0 => ошибка деления на 0.
Ну и там ещё дальше есть что исправить. Возможно что-то mail.ru съел.
Николай БессмертныйУченик (96) 4 года назад
Я знаю. Но как это обойти?
... Гений (84997) Николай Бессмертный, return или sys.exit() н-р
Остальные ответы
port port Искусственный Интеллект (181634) 4 года назад
d=[
" Ярко выраженный дефицит массы тела",
" Дефицит массы тела",
" Норма",
" Предожирение",
" Ожирение 1 степени",
" Ожирение 2 степени",
" Ожирение 3 степени"
]

ans=0
while ans!=1:
~~a=float(input('Рост в метрах '))
~~if 0<a<2.5: ans=1
ans=0
while ans!=1:
~~b=float(input('Вес в килограммах '))
~~if 1<b<500: ans=1
imt=b/a**2
print (round(imt))
if imt<=16: i=0
elif imt<=18: i=1
elif imt<=25: i=2
elif imt<=30: i=3
elif imt<=35: i=4
elif imt<=40: i=5
else: i=6
print (f'Поздравляю! У Вас {d[i]}')

И русский язык "подтяни"... ошибачка... выроженный...
Похожие вопросы