[Python] Verificar variables con if (Solucionado)

Iniciado por DeMoNcRaZy, 19 Agosto 2015, 18:35 PM

0 Miembros y 1 Visitante están viendo este tema.

DeMoNcRaZy

Buenas,

Tengo un problema con verificación en un if.

Código (python) [Seleccionar]
#Calculadora
def menu(operacion):

def sumar(a, b):
return a + b

def restar(a, b):
return a - b

def multi(a, b):
return a * b

def divi(a, b):
return a / b

if operacion == 'sumar':
return sumar
elif operacion == 'restar':
return restar
elif operacion == 'multi':
return multi
elif operacion == 'divi':
return divi

print '''/// Calculadora ///
/// Python ///'''

valor = str(raw_input('Introduce la operacion: '))
#Comprobamos si existe dicha opcion
if valor == 'sumar' or 'restar':
#Le damos el valor a menu
   opcion = menu(valor)
   # Comprobamos que los valores sean numeros
   try:
   num1 = float(raw_input('Primera cifra: '))
   num2 = float(raw_input('Primera cifra: '))
   except ValueError:
   print 'Introduzca un numero.'

   print 'El resultado es:', opcion(num1, num2)
else:
print 'El valor introducido no es correcto'


El problema se encuentra acá:

Código (python) [Seleccionar]
if valor == 'sumar' or 'restar':

Al introducir en consola sumar o restar se ejecuta bien la función.
Pero si introduzco un número o letra mal no me salta al else

Código (python) [Seleccionar]
else:
print 'El valor introducido no es correcto'


Intento que si se introduce una letra mal o número me lance el else, pero no funciona.
Sin embargo hago el if sin el 'or' y funciona correctamente. ¿A qué puede deberse?

Agradezco cualquier sugerencia.
Gracias.

Saludos.
Esta página web no está disponible - Google Chrome

engel lex

esto está mal

if valor == 'sumar' or 'restar':

estás diciendo "continua si valor es igual a  'sumar', o si 'restar' es verdadero" (sabemos que es verdadero todo aquello que no sea false, 0 o una cadena vacía)

debe ser completo
if valor == 'sumar' or valor == 'restar':
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DeMoNcRaZy

Cita de: engel lex en 19 Agosto 2015, 18:41 PM
esto está mal

if valor == 'sumar' or 'restar':

estás diciendo "continua si valor es igual a  'sumar', o si 'restar' es verdadero" (sabemos que es verdadero todo aquello que no sea false, 0 o una cadena vacía)

debe ser completo
if valor == 'sumar' or valor == 'restar':

Gracias, al parecer ha sido un error tonto.
Disculpen las molestias.

Saludos.

TEMA SOLUCIONADO
Esta página web no está disponible - Google Chrome