I’m trying to do Bhaskara in Python and even with the highlighted if programming says I can’t turn a Complex into float

Asked

Viewed 259 times

0

a = float(input("A = "))
b = float(input("B = "))
c = float(input("C = "))
delta = float(b**2-4*a*c)
raiz = (delta ** 0.5)
if raiz is float or int:
    raiz = float(delta ** 0.5)
    x1 = float((-b + raiz) / (a * 2))
    x2 = float((-b - raiz) / (a * 2))
    if x1 == x2:
        print("O resultado é %f" % x1)
    else:
        resultado = (x1, x2)
        print("O resultado é ou %f ou %f" % resultado)
else:
    print("Não há raízes reais. Delta é %s" %delta)
  • 1

    The classical formula avoids arriving at a complex number. Ask instead if the delta is negative, do not attempt to calculate the negative root

  • 1

    Besides what Jefferson said, to complement, if raiz is float or int is wrong, the correct to check the type of the variable would be if isinstance(raiz, (float, int)):

  • Thanks guys, it worked!

2 answers

1

good I managed to do otherwise:

import math

# Recebendo dados
a = float(input('Digite o valor de a: '))
b = float(input('\nDigite o valor de b: '))
c = float(input('\nDigite o valor de c: '))

# Calculando o delta separadamente
delta = float(b**2 - (4*a*c))

# Calculando a raiz após obter o delta
if b < 0:
    raiz = delta * 1.5
else:
    raiz = math.sqrt(delta)

# Calculando o resto da equação após receber a raiz
if (raiz > 0) or (raiz == 0):
    x1 = (-b + raiz) / (2*a)
    x2 = (-b - raiz) / (2*a)
    if x1 == x2:  # Condicional para saber se o resultado será duas raizes iguais
        print('\nS = ', x1)  # se for igual mostrará apenas um número
    else:
        print('\nS = { %d , %d }' % (x1, x2))  # se for diferente significa que são duas raizes diferentes
else:
    print(f'\nO delta {delta} não tem raiz, pois é menor que 0 !')  # o caso se o delta for menor que 0

0

I did so:

def bhaskara(a,b,c):
    delta = (b**2)-(4*a*c)
    print (str(delta) + "  delta")

    x1 = (-b + math.sqrt(delta))/(2*a)
    print (str(x1) + " valor de 'X1'")

    x2 = ((-b - math.sqrt(delta))/(2*a))
    print (str(x2) + " valor de 'X2'")

    xv = -b/(2*a)
    print (str(xv) + " valor de 'XV'")

    yv = -delta/(4*a)
    print (str(yv) + " valor de 'YV'")

    if delta > 0:
        print ("Duas raizes Reais " + str(x1) + ' e ' + str(x2))
    elif delta == 0:
        print ("Uma raiz real (encosta no X)")
    else:
        print (str(x2) + "Sem raízes (nao encosta no X)")

bhaskara(1,12,-13)

bhaskara(2,-16,-18)

bhaskara(1,-1,-6)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.