Introducción
En este proyecto, aprenderás a extraer números de un texto dado, calcular el promedio de esos números y redondear el resultado a dos decimales. Este proyecto te ayudará a practicar el uso de expresiones regulares y el manejo de argumentos de línea de comandos en Python.
👀 Vista previa
$ python3 ~/project/find_num.py "a11 b3.14c15 16"
11.29
$ python3 ~/project/find_num.py "a 5 b 6 c7 dd8 9"
7.00
$ python3 ~/project/find_num.py "ad1dg6dgd9dg4qwe10"
6.00
🎯 Tareas
En este proyecto, aprenderás:
- Cómo usar expresiones regulares para encontrar todos los números (enteros y de punto flotante) en un texto dado
- Cómo convertir los números coincidentes de cadenas a flotantes
- Cómo calcular el promedio de los números extraídos
- Cómo formatear el resultado del promedio a dos decimales
- Cómo manejar argumentos de línea de comandos en un script de Python
🏆 Logros
Después de completar este proyecto, serás capaz de:
- Escribir un script de Python que pueda extraer números de un texto dado
- Calcular el promedio de los números extraídos
- Formatear el resultado del promedio a dos decimales
- Ejecutar el script desde la línea de comandos y pasar el texto como argumento
Configurar el entorno del proyecto
En este paso, aprenderás a configurar el entorno del proyecto y crear los archivos necesarios.
- Abra una terminal y navegue hasta el directorio
/home/labex/project. - Cree un nuevo archivo de Python llamado
find_num.pyen el directorio/home/labex/project.
cd /home/labex/project
touch find_num.py
- Abra el archivo
find_num.pyen un editor de texto.
Importar los módulos necesarios
En este paso, aprenderás a importar los módulos necesarios para el proyecto.
- Agregue el siguiente código al principio del archivo
find_num.py:
import re ## Importar el módulo de expresiones regulares
import sys ## Importar el módulo sys para los argumentos de línea de comandos
Estos módulos se utilizarán para trabajar con expresiones regulares y manejar los argumentos de línea de comandos.
Definir la función de cálculo de promedio
En este paso, aprenderás a definir una función para calcular el promedio de los números en un texto dado.
- Agregue la siguiente función al archivo
find_num.py:
def calculate_average(text):
## Utilice un patrón de expresión regular para encontrar todos los números de punto flotante y enteros en el texto
numbers = re.findall(r"[-+]?\d*\.\d+|\d+", text)
## Convierta los números coincidentes de cadenas a flotantes utilizando comprensión de listas
numbers = [float(num) for num in numbers]
## Calcule el promedio de estos números
average = sum(numbers) / len(numbers)
## Formatee el promedio con dos decimales
average_formatted = "{:.2f}".format(average)
return average_formatted
Esta función toma un texto como entrada, utiliza una expresión regular para extraer todos los números (enteros y de punto flotante) del texto, calcula el promedio de estos números y formatea el resultado a dos decimales.
Implementar la lógica principal
En este paso, aprenderás a implementar la lógica principal del script.
- Agregue el siguiente código al archivo
find_num.py:
if __name__ == "__main__":
## Lea el texto a analizar a partir de los argumentos de línea de comandos (el primer argumento, sys.argv[1])
text = sys.argv[1]
## Llame a la función calculate_average con el texto proporcionado
average = calculate_average(text)
## Imprima el promedio calculado con dos decimales
print(average)
Este código verifica si el script se está ejecutando como el programa principal (if __name__ == "__main__":). Si es así, lee el texto a analizar a partir de los argumentos de línea de comandos (el primer argumento, sys.argv[1]), llama a la función calculate_average con el texto proporcionado e imprime el promedio calculado.
Probar el script
En este paso, aprenderás a probar el script con los ejemplos proporcionados.
- Guarde el archivo
find_num.py. - Ejecute el script con los ejemplos proporcionados:
python3 /home/labex/project/find_num.py "a11 b3.14c15 16"
python3 /home/labex/project/find_num.py "a 5 b 6 c7 dd8 9"
python3 /home/labex/project/find_num.py "ad1dg6dgd9dg4qwe10"
La salida debe coincidir con los resultados esperados:
11.29
7.00
6.00
¡Felicidades! Has completado el proyecto. El script que has creado ahora puede extraer números de un texto dado, calcular el promedio y redondear el resultado a dos decimales.
Resumen
¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



