Код Python выдает ошибку ZeroDivisionError: float division by zero
Написал код для считывания данных с текстового файла и последующей его обработке (результат пока не записываю в файл), но в 20 строчке кода ругается что делится на ноль, хотя делиться на ноль оно не должно. Прилагаю код и саму задачу:
import math
file = open('source_data.txt', 'r')
x = []
t = 0
y = 0
count = 0
#Код
for line in file.readlines():
x.append(line.rstrip().split('=')[1])
count = count + 1
for i in range(count):
t = int(x[i])
if t < -3:
y = ((((83 * t) ** 8 - (41 * t) ** 2 + 35) ** 5 + (55 * t) ** 7)
/ ((((12 * t) ** 4 - (t ** 3)) ** 8) - (((24 * t) ** 2 + 84) ** 4)))
print('%.3e' % y)
if -3 <= t < 1:
y = ((math.sqrt(((29 * t) ** 4 + (26 * t) ** 2 + 38) ** 5) - (79 * t) ** 5)
/ ((((85 * t) ** 7) + t ** 2) ** 5) + ((((28 * t) ** 2) - 34) ** 3))
print('%.3e' % y)
if t >= 1:
y = ((((92 * t) ** 4 - (77 * t) ** 2 + 48) ** 8 - (94 * t) ** 5)
/ ((((76 * t) ** 6 - (t ** 3)) ** 3) - math.sqrt(((16 * t) - 16) ** 3)))
print('%.3e' % y)
file.close()
Ответы (1 шт):
Автор решения: alex
→ Ссылка
Переписал ваш код так, как сказал @4500zenja
Степень выполняется в первую очередь, поэтому надо убрать скобки, например, в выражении 83 * на икс в степени 8, сначала икс возводится в степень 8, а затем умножается на 83
Возведение в степень имеет наивысший приоритет и выполняется, по правилам математики, до умножения
Например, если икс равно 2, то сначала выполняется 2 ** 8 и только потом результат умножается на 83
import math
file = open('source_data.txt', 'r')
x = []
t = 0
y = 0
count = 0
#Код
for line in file.readlines():
x.append(line.rstrip().split('=')[1])
count = count + 1
for i in range(count):
t = int(x[i])
if t < -3:
y = (( ( 83 * t ** 8 - 41 * t ** 2 + 35 ) ** 5 + 55 * t ** 7
/ ((( 12 * t ** 4 - t ** 3 ) ** 8) - (( 24 * t ** 2 + 84) ** 4)))
print('%.3e' % y)
if -3 <= t < 1:
y = ((math.sqrt(( 29 * t ** 4 + 26 * t ** 2 + 38) ** 5) - 79 * t ** 5 )
/ (( 85 * t ** 7 + t ** 2) ** 5) + ((( 28 * t ** 2) - 34) ** 3))
print('%.3e' % y)
if t >= 1:
y = ((( 92 * t ** 4 - 77 * t ** 2 + 48 ) ** 8 - 94 * t ** 5 )
/ ((( 76 * t ** 6 - t ** 3 ) ** 3) - math.sqrt(((16 * t) - 16) ** 3)))
print('%.3e' % y)
file.close()

