Estás usando mal
print.
Cuando lo usas, lo que pongas a continuación tiene que ir entre comillas, a menos que sea una función definida.
Por ejemplo.
En la pantalla de texto aparecerá:
>>>>Hola
En la caso de imprimir una variable sería.
>>> Hola 2
No hacen falta los paréntesis... solo en casos matemáticos como estos:
>>> Hola 3
Lo haces mal en esta parte de tu código, sobre todo:
Código:
else:
print(x1=(str(-b)+'+'+math.sqrt(m))/(2*a))
print(x2=(str(-b)+'-'+math.sqrt(m))/(2*a)
Mira, lo he modificado un poco por cuestiones matemáticas, pero hay algo de tu código que no entiendo.
Código Python:
Ver originalif a==0:
print 'no es una ecuacion de segundo grado'
else:
m = b**2-4*a*c
if m >= 0:
x1 = (-b + sqrt(m)) / (2 * a)
x2 = (-b - sqrt(m)) / (2 * a)
if x1 == x2:
print 'Solución de la ecuación: x=%4.3f' % x1
else:
print 'Soluciones de la ecuación: x1=%4.3f y x2=%4.3f' % (x1, x2)
else:
# Aca iría la parte de los números complejos.
Cuando te dicen que mezclas cadenas con números se refiere a que cuando defines "complejos", cuando usas la función
str, ello te devuelve una cadena... y las cadenas no se pueden dividir por enteros como pretendes aca:
Cita: x1 = complejos(-b/(2*a), (math.sqrt(m)) / 2*a )
x2 = complejos(-b/(2*a), (math.sqrt(m)) / 2*a )
Las cadenas son caráctares. Puedes sumar a cadenas otras cadenas, y multiplicarlas por enteros.
1 así solo, es un entero. Con comillas (en python, obvio), es una cadena (
'1')
Ejemplo:
'1' * 5 = '11111'
'a' * 5 = 'aaaaa'
'1' + 'a' = '1a'
Mejor espera a cursar esa materia, e irás aprendiendo esos pequeños (aunque determinantes) detalles con tu profesor, o relee con más atención. Porque parece que todavía no das la talla para este tipo de ejercicios.
Y recomiendo lo mismo que Alvaro, hazlo todo desde cero, y lee mejor la parte de definición de funciones. Porque el error empieza desde el principio.