1.3 Entrada y salida estándar, conversión de tipos e interacción con el usuario

Enunciado del ejercicio

1. Salida estándar con print() y f-strings formateadas La función print() emite información a la consola del sistema. Las f-strings (cadenas literales formateadas) permiten intercalar expresiones y controlar decimales con precisión científica: \(\text{f"Magnitud: \{valor:.4e\} unidades"}\) Ejemplo: Para mostrar la constante de Planck con 4 cifras decimales en notación exponencial: \(\text{print(f"h = \{6.62607015e-34:.4e\} J s")}\) 2. Entrada de datos interactiva con input() La función input() suspende la ejecución hasta que el usuario introduce datos por teclado y pulsa retorno. Retorna siempre una cadena de texto (str): \(\text{dato_crudo} = \text{input("Ingrese parámetro: ")}\) Ejemplo: Para solicitar el nombre del operador del microscopio: \(\text{operador} = \text{input("Identificador de usuario: ")}\) 3. Conversión explícita de tipos (casting) Al capturar números por teclado, es obligatorio convertirlos explícitamente a tipos numéricos antes de realizar operaciones matemáticas: \(\text{valor_entero} = \text{int(cadena)} \quad \text{y} \quad \text{valor_real} = \text{float(cadena)}\) Ejemplo: Para capturar una concentración molar en notación científica introducida por el usuario: \(\text{conc} = \text{float(input("Concentración molar (M): "))}\) 4. Validación de datos y control preventivo de errores Si el usuario introduce caracteres no numéricos al solicitar un número, Python lanza una excepción de tipo ValueError. Empleamos bloques try-except para asegurar robustez: \(\text{try:}\) $$\text{valor} = \text{float(entrada)}$$ $$\text{except ValueError:}$$ \(\text{print("Entrada no numérica inválida")}\) Ejemplo: Para comprobar que la longitud de onda introducida sea estrictamente positiva: \(\text{valido} = (\text{long_onda} > 0.0)\) Ejemplo 1: Formateo científico de constantes físicas fundamentales en tabla comparativa mediante f-strings.

PASO 1

Asignación de magnitudes en variables flotantes.

Definimos tres constantes de física cuántica y nanotecnología:

$$\text{h_bar} = 1.054571817\text{e-}34$$
$$\text{k_boltzmann} = 1.380649\text{e-}23$$
$$\text{carga_e} = 1.602176634\text{e-}19$$
PASO 2

Impresión con alineación y especificadores de formato científico.

Utilizamos f-strings con ancho de campo fijo y tres decimales exponenciales:

$$\text{print(f"h_barra : \{h_bar:>15.3e\} J s")}$$
$$\text{print(f"k_b : \{k_boltzmann:>15.3e\} J/K")}$$
$$\text{print(f"e : \{carga_e:>15.3e\} C")}$$
Conclusión

Las f-strings garantizan columnas perfectamente tabuladas sin recurrir a módulos externos.

Ejemplo 2:

Lectura interactiva de longitud de onda y cálculo de la energía fotónica asociada con conversión de tipo.

PASO 1

Simulación de captura y conversión a float.

Convertimos la entrada de texto correspondiente a 632.8 nanómetros a metros:

$$\text{entrada_txt} = "632.8"$$
$$\text{long_onda_nm} = \text{float(entrada_txt)}$$
$$\text{long_onda_m} = \text{long_onda_nm} * 1.0\text{e-}9$$
PASO 2

Cálculo y emisión formateada de la energía.

Determinamos la energía del fotón en julios y en electrón-voltios:

$$\text{h} = 6.626\text{e-}34; \text{c} = 3.0\text{e}8$$
$$\text{energia_j} = (\text{h} * \text{c}) / \text{long_onda_m}$$
$$\text{energia_ev} = \text{energia_j} / 1.602\text{e-}19$$
$$\text{print(f"Energía fotón: \{energia_ev:.2f\} eV")}$$
Conclusión

Para 632.8 nm (láser de Helio-Neón), la energía fotónica resulta exactamente 1.96 eV.

Ejemplo 3:

Conversor térmico interactivo entre escalas Celsius y Kelvin para criogenia.

PASO 1

Captura del valor en grados Celsius y conversión numérica.

Asignamos el valor térmico capturado y aplicamos la transformación física:

$$\text{temp_c_str} = "-196.15"$$
$$\text{temp_c} = \text{float(temp_c_str)}$$
$$\text{temp_k} = \text{temp_c} + 273.15$$
PASO 2

Salida con control de signo y precisión.

Mostramos el estado criogénico formateado:

$$\text{print(f"Temperatura: \{temp_c:+.2f\} °C = \{temp_k:.2f\} K")}$$
Conclusión

El punto de ebullición del nitrógeno líquido a -196.15 °C corresponde exactamente a 77.00 K.

Ejemplo 4:

Formateo estructurado de reporte de transmitancia y absorbancia óptica.

PASO 1

Cálculo analítico de absorbancia a partir de transmitancia porcentual.

Convertimos la transmitancia al rango unitario y calculamos la absorbancia como -log10(T):

$$\text{trans_pct} = 45.2$$
$$\text{trans_frac} = \text{trans_pct} / 100.0$$
$$\text{import math}$$
$$\text{absorbancia} = -\text{math.log10(trans_frac)}$$
PASO 2

Presentación en caja de informe estandarizada.

Emitimos un bloque de texto formateado con líneas separadoras:

$$\text{print("-" * 35)}$$
$$\text{print(f"Transmitancia : \{trans_pct:6.2f\} %")}$$
$$\text{print(f"Absorbancia : \{absorbancia:6.4f\} AU")}$$
$$\text{print("-" * 35)}$$
Conclusión

Para una transmitancia del 45.20 %, la absorbancia óptica resulta ser de 0.3449 unidades de absorbancia.

Ejemplo 5:

Validación defensiva de entrada numérica de potencial electrostático con control de excepciones.

PASO 1

Implementación de la estructura try-except.

Protegemos la operación de casting contra entradas no numéricas:

$$\text{entrada_usuario} = "25.4 mV"$$
$$\text{try:}$$
$$\text{potencial} = \text{float(entrada_usuario)}$$
$$\text{except ValueError:}$$
$$\text{potencial} = 0.0$$
$$\text{print("Aviso: Entrada no numérica, asignando 0.0 V")}$$
PASO 2

Verificación del valor de salida.

Comprobamos que el programa no colapsa y continúa con la ejecución:

$$\text{print(f"Voltaje operativo final: \{potencial:.3f\} V")}$$
Conclusión

La interceptación de ValueError previene caídas inesperadas en sistemas de adquisición desatendidos.