Введение
В этом проекте вы научитесь вычислять значения урона двух высокопроизводительных лазерных оружий, разработанных исследовательским институтом вооружений Галактической Империи. Лаборатория вооружений отвечает за тестирование значений оружия, и вы поможете им, реализовав процесс вычисления урона.
$ python calculate_weapon_damage.py
[3, 2]
🎯 Задачи
В этом проекте вы научитесь:
- настраивать проектную среду и создавать необходимые файлы;
- реализовывать функцию
calculate_weapon_damage()для вычисления значений урона двух лазерных оружий; - тестировать функцию
calculate_weapon_damage()с использованием предоставленных примеров данных.
🏆 Достижения
После завершения этого проекта вы сможете:
- понять постановку задачи и требования к вычислению урона лазерного оружия;
- реализовать функцию для решения системы линейных уравнений и вычислить значения урона лазерных оружий;
- протестировать реализованную функцию с различными входными данными, чтобы убедиться, что она работает правильно;
- применить свои навыки решения задач и программирования в реальном сценарии.
Настройка окружения проекта
В этом шаге вы настроите проектную среду и измените необходимые файлы для проекта.
- Откройте файл
calculate_weapon_damage.pyв текстовом редакторе. - В начале файла добавьте следующий импорт:
from typing import List
Это позволит вам использовать аннотацию типа List в своем коде.
Реализовать функцию calculate_weapon_damage()
В этом шаге вы реализуете функцию calculate_weapon_damage() для вычисления значений урона двух лазерных оружий.
- Внутри файла
calculate_weapon_damage.pyопределите функциюcalculate_weapon_damage()с сигнатурой:
def calculate_weapon_damage(test1: List[int], test2: List[int]) -> List[int]:
## Ваш код здесь
pass
Реализуйте логику для вычисления значений урона оружия A и оружия B. В качестве руководства вы можете использовать следующие шаги:
- Проверьте, имеют ли входные массивы
test1иtest2правильную длину (по 3 элемента каждому). Если нет, верните пустой список[]. - Распакуйте значения из входных массивов в переменные
a1,b1,total1иa2,b2,total2. - Решите систему линейных уравнений, чтобы найти значения урона
x(для оружия A) иy(для оружия B). Вы можете использовать следующие уравнения:
a1 * x + b1 * y = total1 a2 * x + b2 * y = total2- Преобразуйте вычисленные значения
xиyв целые числа и верните их в виде списка[x, y]. - Если при решении уравнений возникает
ZeroDivisionError, верните пустой список[].
Код выглядит так:
def calculate_weapon_damage(test1: List[int], test2: List[int]) -> List[int]: if len(test1)!= 3 or len(test2)!= 3: return [] a1, b1, total1 = test1 a2, b2, total2 = test2 ## a1 * x + b1 * y = total1 ## a2 * x + b2 * y = total2 try: y = (total1 * a2 - total2 * a1) / (b1 * a2 - b2 * a1) x = (total1 - b1 * y) / a1 except ZeroDivisionError: return [] return [int(x), int(y)]- Проверьте, имеют ли входные массивы
Добавьте в конец файла следующий код для тестирования функции
calculate_weapon_damage():
if __name__ == "__main__":
print(calculate_weapon_damage([4, 5, 22], [3, 2, 13]))
Это выведет вычисленные значения урона при запуске скрипта.
Тестировать функцию calculate_weapon_damage()
В этом шаге вы будете тестировать функцию calculate_weapon_damage() с использованием предоставленных примеров данных.
- Сохраните файл
calculate_weapon_damage.py. - Откройте терминал и перейдите в директорию
/home/labex/project. - Запустите скрипт
calculate_weapon_damage.py:
python calculate_weapon_damage.py
Вы должны увидеть вывод [3, 2], который является ожидаемым результатом для заданных примеров данных.
- Попробуйте протестировать функцию с другими входными данными, чтобы убедиться, что она работает правильно. Например, вы можете попробовать передать
[4, 5, 22]и[3, 2, 14], чтобы увидеть, возвращает ли функция пустой список[]из-за некорректного ввода.
Поздравляем! Вы успешно реализовали функцию calculate_weapon_damage() для вычисления значений урона двух лазерных оружий.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



