Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Где ошибка и как устранить python

Введите a
8.78
Введите b
-0.49
Введите x
-1
Введите y
8.8
Введите z
3.4
Traceback (most recent call last):
File "Untitled6.py", line 10, in <module>
s=math.sqrt((x**y)+(y**z)+(z**x)+((math.e**x)+math.log(math.fabs(math.sin(y))))/((z**4)*0.87))
TypeError: can't convert complex to float


** Process exited - Return Code: 1 **
Press Enter to exit terminal

Дополнен

import math
a=float(input('Введите a'))
b=float(input('Введите b'))
x=float(input('Введите x'))
y=float(input('Введите y'))
z=float(input('Введите z'))
d=((math.pi**2)*(math.sqrt((a**3)-(b**3))))-(math.e**0.5)+(math.log(math.fabs(a*b))/0.5**8)
s=math.sqrt((x**y)+(y**z)+(z**x)+((math.e**x)+math.log(math.fabs(math.sin(y))))/((z**4)*0.87))
print('d=',d,'s=',s)

По дате
По рейтингу
Аватар пользователя
Новичок

Для начала, опубликуй выражение из задания. Не то, как ты его интерпретировал (math.e**x и math.e**0.5 показывают, что с интерпретацией у тебя не очень), а то, что реально написано в тексте задачи.

Аватар пользователя
Просветленный

Ошибка происходит из-за попытки взять квадратный корень из комплексного числа. В языке Python функция math.sqrt() принимает только вещественные числа. Если аргумент функции оказывается комплексным числом, возникает ошибка TypeError: can't convert complex to float.

Давайте разберем выражение, в котором возникает ошибка:

1
 s = math.sqrt((x**y) + (y**z) + (z**x) + ((math.e**x) + math.log(math.fabs(math.sin(y)))) / ((z**4) * 0.87))  

Если один из членов выражения внутри math.sqrt() является отрицательным или комплексным числом, то функция math.sqrt() не сможет его обработать.

Для решения проблемы, можно воспользоваться модулем cmath, который поддерживает комплексные числа.

Код с cmath выглядит так:

123456789101112131415
 import cmath 
import math 
 
a = float(input('Введите a: ')) 
b = float(input('Введите b: ')) 
x = float(input('Введите x: ')) 
y = float(input('Введите y: ')) 
z = float(input('Введите z: ')) 
 
d = ((math.pi**2) * (math.sqrt((a**3) - (b**3)))) - (math.e**0.5) + (math.log(math.fabs(a*b)) / 0.5**8) 
 
s = cmath.sqrt((x**y) + (y**z) + (z**x) + ((math.e**x) + math.log(math.fabs(math.sin(y)))) / ((z**4) * 0.87)) 
 
print('d =', d, 's =', s) 
 

Обратите внимание, что s теперь может быть комплексным числом. Если требуется работать только с вещественными числами, необходимо дополнительно проверять входные данные или использовать функции модуля math так, чтобы исключить получение комплексных чисел.

Аватар пользователя
Ученик

Идей особо нет, но попробуй написать перед основной Частью кода x=float(x)

Аватар пользователя
Ученик

Код хотя бы вставьте в вопрос.
ГДЕ print где данные? Если фото то распознавание есть в сети такие сайты текста/
Скажите а модуль math у вас установлен?
Спросил у чата GPT просто нет времени самому..
Не у компа.
Вот что пишет.
Ошибки в Python:
Ошибка 1:

При вводе значения для переменной "a" произошла ошибка. Python не смог сконвертировать введенную строку в число с плавающей запятой из-за того, что вводимая строка была пустой.
Ошибка 2:

При выполнении математических операций произошла ошибка. В данном случае, Python выдал ошибку "TypeError: must be real number, not complex", что означает, что ожидалось использование действительного числа, а не комплексного.
Обе ошибки связаны с некорректным вводом данных или выполнением математических операций в вашем скрипте.
Походу где-то в данных ввода ошибка у тебя.