# -*- coding: utf-8 -*-

import os
import sys

#Limpia la terminal de todos los caracteres
def limpiarPantalla():
    if sys.platform == "win32":
        os.system('cls')
    else: 
        os.system('clear')
    
#Funcion de inicio de la calculadora
def inicio():
    limpiarPantalla()

#Funcion encargada de decidir que menu se muestra
#retorna la opcion escogida del menu    
def mostrarMenus(menu):
    if (menu == 1):
        menuUno()
    elif (menu == 2):
        menuArit()
    elif (menu == 3):
        menuGeom()
    return raw_input("Ingrese opcion: ")

#Ve el menu y opcion elegidos y ejecuta la accion deseada.
#Esta puede ser un cambio de menu o una accion puntual como una suma
#o el calculo de un area
def ejecutarAccion(menu, opcion):
    if (menu == 1):
        if (opcion == "1"):
            menu = 2 #Cambiamos al menu aritmetico
        elif (opcion == "2"):
            menu = 3 #Cambiamos al menu geometrico
        elif (opcion == "99"):
            menu = 0 #Ponemos menu en 0 para terminar el programa
    elif (menu == 2):
        if (opcion == "1"):
            suma() #Suma
        elif (opcion == "2"):
            multiplicacion()
        elif (opcion == "99"):
            menu = 1
    elif (menu == 3):
        if (opcion == "1"):
            areaRect() #Suma
        elif (opcion == "2"):
            areaCirc()
        elif (opcion == "99"):
            menu = 1
    return menu
    
def menuUno():
    limpiarPantalla()
    print "Menu Principal:"
    print "	1  - Menu aritmetico"
    print "	2  - Menu geometrico"
    print "	99 - Salir"

def menuArit():
    limpiarPantalla()
    print "Menu Aritmetico:"
    print "	1  - Suma"
    print "	2  - Multiplicacion"
    print "	99 - Menu principal"    

def menuGeom():
    limpiarPantalla()
    print "Menu Geomtrico:"
    print "	1  - Area rectangulo"
    print "	2  - Area circulo"
    print "	99 - Menu principal"    
 
def suma():
    limpiarPantalla()
    v1 = float(raw_input("Ingrese primer valor: "))
    v2 = float(raw_input("Ingrese segundo valor: "))
    print("%f + %f = %f" % (v1, v2, v1 + v2))
    raw_input("Presione cualquier tecla y enter para seguir....")

def multiplicacion():
    limpiarPantalla()
    v1 = float(raw_input("Ingrese primer valor: "))
    v2 = float(raw_input("Ingrese segundo valor: "))
    print("%f * %f = %f" % (v1, v2, v1 * v2))
    raw_input("Presione cualquier tecla y enter para seguir....")

def areaCirc():
    limpiarPantalla()
    v1 = float(raw_input("Ingrese el radio: "))
    print("%f * Pi * Pi  = %f" % (v1, v1 * v1 * 3.1416))
    raw_input("Presione cualquier tecla y enter para seguir....")

def areaRect():
    limpiarPantalla()
    v1 = float(raw_input("Ingrese el largo: "))
    v2 = float(raw_input("Ingrese el ancho: "))
    print("%f * %f = %f" % (v1, v2 , v1 * v2))
    raw_input("Presione cualquier tecla y enter para seguir....")

    
    
menu = 1
terminar = False    
inicio()
while(not terminar):
    opcion   = mostrarMenus(menu)
    menu     = ejecutarAccion(menu, opcion)
    terminar = (menu == 0)

limpiarPantalla()
print "Hasta luego !!!! "


@@ -1408,20 +1408,91 @@
 rn menu%0A
-    
+%0A%0A################### Menues #############################################%0A
 %0Adef men
@@ -1971,17 +1971,92 @@
 al%22    %0A
- 
+%0A#################### Acciones ########################################### %0A
 %0Adef sum
@@ -2074,32 +2074,45 @@
 mpiarPantalla()%0A
+    try:%0A    
     v1 = float(r
@@ -2143,32 +2143,36 @@
  valor: %22))%0A    
+  
+  
 v2 = float(raw_i
@@ -2200,32 +2200,36 @@
  valor: %22))%0A    
+ 
+   
 print(%22%25f + %25f =
@@ -2250,24 +2250,88 @@
 , v1 + v2))%0A
+    except ValueError:%0A        print %22No ingresaste un numero!%22%0A
     raw_inpu
@@ -2421,32 +2421,45 @@
 mpiarPantalla()%0A
+    try:%0A    
     v1 = float(r
@@ -2490,32 +2490,36 @@
  valor: %22))%0A    
+  
+  
 v2 = float(raw_i
@@ -2547,32 +2547,36 @@
  valor: %22))%0A    
+  
+  
 print(%22%25f * %25f =
@@ -2593,32 +2593,96 @@
 , v2, v1 * v2))%0A
+    except ValueError:%0A        print %22No ingresaste un numero!%22%0A
     raw_input(%22P
@@ -2762,32 +2762,45 @@
 mpiarPantalla()%0A
+    try:%0A    
     v1 = float(r
@@ -2827,24 +2827,28 @@
  radio: %22))%0A
+    
     print(%22%25
@@ -2892,16 +2892,80 @@
 .1416))%0A
+    except ValueError:%0A        print %22No ingresaste un numero!%22%0A
     raw_
@@ -3057,24 +3057,37 @@
 rPantalla()%0A
+    try:%0A    
     v1 = flo
@@ -3122,24 +3122,28 @@
 go: %22))%0A    
+ 
+   
 v2 = float(r
@@ -3174,24 +3174,28 @@
 ho: %22))%0A    
+ 
+   
 print(%22%25f * 
@@ -3221,24 +3221,88 @@
 , v1 * v2))%0A
+    except ValueError:%0A        print %22No ingresaste un numero!%22%0A
     raw_inpu
@@ -3361,16 +3361,99 @@
 )%0A%0A    %0A
+################## Programa principal ###########################################%0A%0A
     %0Amen

Add error handling