Нахождение корней кубического уравнения, найти ошибку

import math
import sys
a = int(input("Введите значение a= "))
b = int(input("Введите значение b= "))
c = int(input("Введите значение c= "))
d = int(input("Введите значение d= "))
Q = (b*2-3*c)/9
R = (2*b*3-9*a*c+27*d)/54
if R*2 < Q*3 :  
 t= acos(R/sqrt(Q))/3
 x1 = -2*sqrt(Q)*cos(t)-b/3
 x2 = -2*sqrt(Q)*cos(t+(2*pi/3))-b/3
 x3 = -2*sqrt(Q)*cos(t-(2*pi/3))-b/3
print(x1)
print(x2)
print(x3)
 
else :
  A = -sign(R)[abs(R) + sqrt (R*2-Q*3)]1/3
  B = Q/b
  x1 = (A+B)-A/3
  X2 = -(A+B)0/2-b/3 + i*sqrt(3)*(A-B)/2
print (x1)
print (x2)
Написал код для нахождения корней кубического уравнения, но ошибку выдает,непонятно где она,помогите исправить пожалуйста
11 ответов

Во 1, отступы не абы какие должны быть, а точно 4 пробела. Во 2 вот ответь глядя на свой код, откуда по твоему там взялись функции sqrt, cos и т д Их в области видимости по умолчанию нет, а ты их пытаешься вызывать именно оттуда. В 3, почему ты выводишь значения не в блоке условия? Получается, если у тебя условие не выполнится, переменные не создадутся и будет ошибка.Читай, что написал и думай....


В 4 зачем вычислять переменные, а потом их выводить, если Вы больше нигде их не используете?
print('x1 = ', -2*sqrt(Q)*cos(t)-b/3)


Во 2 вот ответь глядя на свой код, откуда по твоему там взялись функции sqrt, cos и т д
имелось ввиду:
x1 = -2*math.sqrt(Q)*math.cos(t)-b/3
и т.д. как вариант если конкретно не импортировать эти функциилибо:
from math import cos, sqrt
или:
from math import *
но последний не желателен!


В 5 однотипные операции принято делать циклом:
for i in 'a', 'b', 'c', 'd':
    vars()[i] = int(input("Введите значение " + i + " = "))


Ок,еще что там?Я первый раз в питоне работаю


Ок,еще что там?
Для начала это исправь


хорошоИсправил, как дальше?у меня не считает(


Мы не экстрасенсы. Где ошибка, где код?


import math
import sys
for i in 'a', 'b', 'c', 'd':
    vars()[i] = int(input("Введите значение " + i + " = "))
 
Q = (b*2-3*c)/9
R = (2*b*3-9*a*c+27*d)/54
if R*2 < Q*3 :  
    t= acos(R/sqrt(Q))/3
    print('x1 = ', -2*math.sqrt(Q)*math.cos(t)-b/3)
    print('x2 = ', -2*math.sqrt(Q)*math.cos(t+(2*pi/3))-a/3)
    print('x3 = ', -2*math.sqrt(Q)*math.cos(t-(2*pi/3))-a/3)
else:
    A = -math.sign(R)[abs(R) + math.sqrt (R*2-Q*3)]*(1/3)
    B = Q/b
    print('x1 = ', (A+B)-A/3)
    print('x2 = ', -(A+B)/2-b/3 + i*math.sqrt(3)*(A-B)/2)
вот код, проверте есть ли ошибки)


Я тебе уже говорил, что ты не указываешь откуда берёшь функции. Ещё раз смотри код (строка 9 на пример), а ещё на пример с чего ты взял, что в библиотеке math есть функция sign (строка 14), такой функции там нет, предполагаю, опечатка. Ещё один важный момент по оформлению кода. Арифметические операторы должны отделяться с обеих сторон пробелами. Пример:
res = 1 + 1  # правильно
res = 4/2  # не правильно
Я бы советовал тебе поставить ide pycharm. Она будет тебе подсвечивать косяки, которые ты допускаешь.


хорошо спасибо!