Введение
В этом проекте вы научитесь извлекать числа из заданного текста, вычислять среднее арифметическое этих чисел и округлять результат до двух десятичных знаков. Этот проект поможет вам потренироваться в работе с регулярными выражениями и обработке аргументов командной строки в Python.
👀 Предварительный просмотр
$ 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
🎯 Задачи
В этом проекте вы научитесь:
- Как использовать регулярные выражения для поиска всех чисел (как целых, так и с плавающей точкой) в заданном тексте
- Как преобразовать найденные числа из строк в числа с плавающей точкой
- Как вычислить среднее арифметическое извлеченных чисел
- Как форматировать результат среднего арифметического до двух десятичных знаков
- Как обрабатывать аргументы командной строки в скрипте на Python
🏆 Достижения
После завершения этого проекта вы сможете:
- Написать скрипт на Python, который может извлекать числа из заданного текста
- Вычислить среднее арифметическое извлеченных чисел
- Форматировать результат среднего арифметического до двух десятичных знаков
- Запускать скрипт из командной строки и передавать текст в качестве аргумента
Настройка окружения проекта
В этом шаге вы научитесь настраивать окружение проекта и создавать необходимые файлы.
- Откройте терминал и перейдите в директорию
/home/labex/project. - Создайте новый файл на Python с именем
find_num.pyв директории/home/labex/project.
cd /home/labex/project
touch find_num.py
- Откройте файл
find_num.pyв текстовом редакторе.
Импортировать необходимые модули
В этом шаге вы научитесь импортировать необходимые модули для проекта.
- Добавьте следующий код в начало файла
find_num.py:
import re ## Импортировать модуль регулярных выражений
import sys ## Импортировать модуль sys для аргументов командной строки
Эти модули будут использоваться для работы с регулярными выражениями и обработки аргументов командной строки.
Определить функцию для вычисления среднего значения
В этом шаге вы научитесь определять функцию для вычисления среднего значения чисел в заданном тексте.
- Добавьте следующую функцию в файл
find_num.py:
def calculate_average(text):
## Используйте шаблон регулярного выражения для поиска всех чисел с плавающей точкой и целых чисел в тексте
numbers = re.findall(r"[-+]?\d*\.\d+|\d+", text)
## Преобразуйте найденные числа из строк в числа с плавающей точкой с использованием списочного выражения
numbers = [float(num) for num in numbers]
## Вычислите среднее значение этих чисел
average = sum(numbers) / len(numbers)
## Отформатируйте среднее значение с двумя десятичными знаками
average_formatted = "{:.2f}".format(average)
return average_formatted
Эта функция принимает текст в качестве входных данных, использует регулярное выражение для извлечения всех чисел (как целых, так и с плавающей точкой) из текста, вычисляет среднее значение этих чисел и форматирует результат до двух десятичных знаков.
Реализовать главную логику
В этом шаге вы научитесь реализовывать главную логику скрипта.
- Добавьте следующий код в файл
find_num.py:
if __name__ == "__main__":
## Считайте текст для анализа из аргументов командной строки (первый аргумент, sys.argv[1])
text = sys.argv[1]
## Вызовите функцию calculate_average с предоставленным текстом
average = calculate_average(text)
## Выведите вычисленное среднее значение с двумя десятичными знаками
print(average)
Этот код проверяет, запускается ли скрипт как основная программа (if __name__ == "__main__":). Если да, то он считывает текст для анализа из аргументов командной строки (первый аргумент, sys.argv[1]), вызывает функцию calculate_average с предоставленным текстом и выводит вычисленное среднее значение.
Тестировать скрипт
В этом шаге вы научитесь тестировать скрипт с помощью предоставленных примеров.
- Сохраните файл
find_num.py. - Запустите скрипт с предоставленными примерами:
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"
Результат должен соответствовать ожидаемым:
11.29
7.00
6.00
Поздравляем! Вы завершили проект. Созданный вами скрипт теперь может извлекать числа из заданного текста, вычислять среднее значение и округлять результат до двух десятичных знаков.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



