Título: Python: Syntax error en "def" o_o
Publicado por: S3kh en 8 Agosto 2011, 22:38 pm
De nuevo yo con mis problemas raros, estoy usando IDLE, estaba probando el siguiente código (Da las raíces de una ecuación cuadrática, y muestra los pasos para hacerla), y realmente, andaba todo bien, iba editando la funcion LinealStep (Que en el código se ocupa de mostrar el paso por paso), y de repente el programa empezó a tirar "Syntax Error", en algo donde no había tocado absolutamente nada. Me marca "def". Y me marca siempre uno. No sé sinceramente cuál es el error sintáctico acá. Se que no tiene que ver con identación (O al menos no me dice eso): # -*- coding: cp1252 -*-
from os import system from cmath import sqrt
def Lineal(a, b, c): a = float(a) b = float(b) c = float(c) bc = b ** 2.0 bcstr = str(bc) Disc = bc - 4.0 * a * c DiscStr = str(Disc) DiscStr2 = 'bc - 4.0 * a * c' Sqr_Res = sqrt(Disc) Sqr_ResStr = str(Sqr_Res) Sqr_ResStr2 = 'R2(bc - 4.0 * a * c)' NEG_Res = -b - Sqr_Res / (2.0 * a) rNEG_Res = abs(NEG_Res) POS_Res = -b + Sqr_Res / (2.0 * a) rPOS_Res = abs(POS_Res) print ' ' print 'Fórmula usada: -b +- R2 <b^2 - 4 * a * c>' print ' -----------------' print ' 2 * a '
LinealStep(a, b, c, bc, bcstr, Sqr_Res)
print 'X1 = ', rPOS_Res print 'X2 = ', rNEG_Res
def LinealStep(a, b, c, bc, bcstr, Sqr_Res):
Astr, Bstr, Cstr, BCstr = str(a), str(b), str(c), str(bc) print 'Paso 1) Implementar fórmula' print 'Paso 2) Reemplazar:' print ' a por ', Astr print ' b por ', Bstr print ' c por ', Cstr
print 'Quedando asi la formula: ', Bstr, ' +- R2<', Bstr, '^2 + 4 * ', Astr, ' * ', Cstr, '>' print ' '* 36, '-' * 25 print ' '* 45, '2 * ', Astr
print 'Resolviendo interior de la raiz(Discriminante): ' print ' ', Bstr, '^2 + 4 * ', Astr, ' * ', Cstr print ' ', BCstr, ' + ', str((4 * a) * c) print ' ', str(bc + (4 * a) * c), ' '
print 'Ahora, se calcula la raiz cuadrada de ', str(bc + (4 * a) * c) print 'R2<', str(bc + (4 * a) * c, ' = ', Sqr_Res
##ACÁ ME TIRA ERROR MARCANDO "def", pero a veces lo marca en los otros def def Menu(): TCuad = raw_input('Coeficiente de termino cuadratico(a): ') TX = raw_input('Segundo coeficiente(b): ') TIndep = raw_input('Término independiente(c): ') print 'La ecuacion quedaria de la siguiente manera: ' print int(TCuad), 'X^2 + ', int(TX), 'X + ', int(TIndep) Next = raw_input('Presione enter para hallar raíces: ') Lineal(TCuad, TX, TIndep)
Menu() EDIT: Y ahora, saqué la función Menu, y me marca error en el nombre de la variable TCuad, dejo el código de esa última parte: def LinealStep(a, b, c, bc, bcstr, Sqr_Res):
Astr, Bstr, Cstr, BCstr = str(a), str(b), str(c), str(bc) print 'Paso 1) Implementar fórmula' print 'Paso 2) Reemplazar:' print ' a por ', Astr print ' b por ', Bstr print ' c por ', Cstr
print 'Quedando asi la formula: ', Bstr, ' +- R2<', Bstr, '^2 + 4 * ', Astr, ' * ', Cstr, '>' print ' '* 36, '-' * 25 print ' '* 45, '2 * ', Astr
print 'Resolviendo interior de la raiz(Discriminante): ' print ' ', Bstr, '^2 + 4 * ', Astr, ' * ', Cstr print ' ', BCstr, ' + ', str((4 * a) * c) print ' ', str(bc + (4 * a) * c), ' '
print 'Ahora, se calcula la raiz cuadrada de ', str(bc + (4 * a) * c) print 'R2<', str(bc + (4 * a) * c, ' = ', Sqr_Res
TCuad = raw_input('Coeficiente de termino cuadratico(a): ') TX = raw_input('Segundo coeficiente(b): ') TIndep = raw_input('Término independiente(c): ') print 'La ecuacion quedaria de la siguiente manera: ' print int(TCuad), 'X^2 + ', int(TX), 'X + ', int(TIndep) Next = raw_input('Presione enter para hallar raíces: ') Lineal(TCuad, TX, TIndep) Me marca en rojo TCuad. Qué onda? O sea, no hay problemas de identación, no es palabra reservada, y me anduvo perfecto :\ se me empezó a buguear con el def de las funciones, saco la función Menu y me tira error en eso u.u Desde ya muchas gracias de antemano n.n
Título: Re: Python: Syntax error en "def" o_o
Publicado por: criskapunk en 14 Agosto 2011, 01:02 am
Una pregunta, estás ejecutando ese código desde el intérprete interactivo o desde un archivo .py? Edito:Creo que ya se la causa de la falla ;D Antes que nada, te falta cerrar un paréntesis en la última línea de la función: print 'R2<', str(bc + (4 * a) * c), ' = ', Sqr_Res
Como te dije arriba, si copiaste todo ese código (La declaración de la función y las siguientes instrucciones) directamente en el intérprete interactivo de Python, tira ese error. Primero tenés que copiar la declaración, darle Enter y una vez que te aparezca el prompt (Esto: >>>) copiar las demás lineas. Un saludo.
|