Saltar a contenido

Paso 2: Funciones Básicas

En este paso, añadiremos las funciones fundamentales que manejan la entrada de datos y los cálculos básicos de la calculadora.

📦 Código a añadir

Añade el siguiente código después del código del Paso 1 en tu archivo calculadora.py:

def escribir(valor):
    entrada.insert(tk.END, valor)

def limpiar():
    entrada.delete(0, tk.END)

def borrar():
    if entrada.get():
        entrada.delete(len(entrada.get())-1)

def calcular():
    try:
        expresion = entrada.get()
        # Reemplazar funciones para eval
        expresion = expresion.replace('sin(', 'math.sin(math.radians(')
        expresion = expresion.replace('cos(', 'math.cos(math.radians(')
        expresion = expresion.replace('tan(', 'math.tan(math.radians(')
        expresion = expresion.replace('log(', 'math.log10(')
        expresion = expresion.replace('ln(', 'math.log(')
        expresion = expresion.replace('√(', 'math.sqrt(')
        expresion = expresion.replace('π', str(math.pi))
        expresion = expresion.replace('e', str(math.e))

        resultado = eval(expresion)
        limpiar()
        escribir(str(resultado))
    except:
        limpiar()
        escribir("Error")

🔍 Explicación detallada

Función escribir(valor)

  • Propósito: Añade texto al final del campo de entrada
  • Parámetro: valor - texto a insertar (número, operador, etc.)
  • Funcionamiento: Usa tk.END para insertar al final del texto actual

Función limpiar()

  • Propósito: Borra todo el contenido del campo de entrada
  • Funcionamiento: Elimina desde la posición 0 hasta el final (tk.END)
  • Uso: Botón "C" (Clear) y después de cálculos

Función borrar()

  • Propósito: Elimina el último carácter ingresado (función DEL/Backspace)
  • Funcionamiento:
  • Verifica que hay contenido con entrada.get()
  • Elimina el último carácter usando delete(posición_final-1)
  • Mejora: Incluye validación para evitar errores en campos vacíos

Función calcular()

  • Propósito: Evalúa la expresión matemática y muestra el resultado
  • Características avanzadas:
  • Reemplazos inteligentes: Convierte texto de botones a funciones Python
    • sin(math.sin(math.radians( (convierte grados a radianes)
    • log(math.log10( (logaritmo base 10)
    • π → valor numérico de pi
  • Manejo de errores: Muestra "Error" si la expresión es inválida
  • Limpieza automática: Borra el contenido anterior y muestra el resultado

🎯 Casos de uso

Función Caso de uso Ejemplo
escribir() Botones numéricos y operadores escribir("5"), escribir("+")
limpiar() Botón Clear, después de cálculos Resetear la calculadora
borrar() Corrección de errores de digitación Borrar último dígito
calcular() Botón igual, obtener resultado Evaluar "2+3*4"

⚠️ Consideraciones importantes

  1. Seguridad de eval(): Aunque eval() puede ser peligroso, aquí es seguro porque:
  2. Solo acepta entrada del usuario a través de la interfaz
  3. Reemplazamos texto antes de evaluar
  4. Manejamos excepciones

  5. Conversión de grados: Las funciones trigonométricas usan radianes internamente, pero los usuarios esperan grados

✅ Verificación

Después de añadir este código: 1. Guarda el archivo 2. El código aún no ejecutará una ventana (necesitas los siguientes pasos) 3. Verifica que no hay errores de sintaxis

➡️ Siguiente paso

Continúa con Paso 3: Funciones Científicas para añadir las funciones matemáticas avanzadas.