Calcul du dégât des armes lasers

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à calculer les valeurs de dégâts de deux armes lasers performantes développées par l'institut de recherche d'armes de l'Empire Galactique. Le laboratoire d'équipement d'armes est responsable de tester les valeurs des armes, et vous allez les aider en mettant en œuvre le processus de calcul de dégâts.

$ python calculate_weapon_damage.py
[3, 2]

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment configurer l'environnement du projet et créer les fichiers nécessaires
  • Comment implémenter la fonction calculate_weapon_damage() pour calculer les valeurs de dégâts des deux armes lasers
  • Comment tester la fonction calculate_weapon_damage() avec les données d'exemple fournies

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre l'énoncé du problème et les exigences pour le calcul des dégâts des armes lasers
  • Implémenter une fonction pour résoudre un système d'équations linéaires et calculer les valeurs de dégâts des armes lasers
  • Tester la fonction implémentée avec différentes données d'entrée pour vous assurer qu'elle fonctionne correctement
  • Appliquer vos compétences de résolution de problèmes et de programmation à un scénario du monde réel

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/variables_data_types -.-> lab-302697{{"Calcul du dégât des armes lasers"}} python/type_conversion -.-> lab-302697{{"Calcul du dégât des armes lasers"}} python/lists -.-> lab-302697{{"Calcul du dégât des armes lasers"}} python/function_definition -.-> lab-302697{{"Calcul du dégât des armes lasers"}} python/arguments_return -.-> lab-302697{{"Calcul du dégât des armes lasers"}} python/importing_modules -.-> lab-302697{{"Calcul du dégât des armes lasers"}} python/catching_exceptions -.-> lab-302697{{"Calcul du dégât des armes lasers"}} end

Configurez l'environnement du projet

Dans cette étape, vous allez configurer l'environnement du projet et modifier les fichiers nécessaires au projet.

  1. Ouvrez le fichier calculate_weapon_damage.py dans un éditeur de texte.
  2. En haut du fichier, ajoutez l'instruction d'importation suivante :
from typing import List

Cela vous permettra d'utiliser l'annotation de type List dans votre code.

Implémentez la fonction calculate_weapon_damage()

Dans cette étape, vous allez implémenter la fonction calculate_weapon_damage() pour calculer les valeurs de dégâts des deux armes lasers.

  1. Dans le fichier calculate_weapon_damage.py, définissez la fonction calculate_weapon_damage() avec la signature suivante :
def calculate_weapon_damage(test1: List[int], test2: List[int]) -> List[int]:
    ## Votre code ici
    pass
  1. Implémentez la logique pour calculer les valeurs de dégâts de l'Arme A et de l'Arme B. Vous pouvez utiliser les étapes suivantes comme guide :

    • Vérifiez si les tableaux d'entrée test1 et test2 ont la longueur correcte (3 éléments chacun). Si ce n'est pas le cas, renvoyez une liste vide [].
    • Déballez les valeurs des tableaux d'entrée dans les variables a1, b1, total1 et a2, b2, total2.
    • Résolvez le système d'équations linéaires pour trouver les valeurs de dégâts x (pour l'Arme A) et y (pour l'Arme B). Vous pouvez utiliser les équations suivantes :
    a1 * x + b1 * y = total1
    a2 * x + b2 * y = total2
    • Convertissez les valeurs calculées de x et y en entiers et renvoyez-les sous forme d'une liste [x, y].
    • Si une ZeroDivisionError se produit lors de la résolution des équations, renvoyez une liste vide [].

    Le code est le suivant :

     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)]
  2. Ajoutez le code suivant à la fin du fichier pour tester la fonction calculate_weapon_damage() :

if __name__ == "__main__":
    print(calculate_weapon_damage([4, 5, 22], [3, 2, 13]))

Cela imprimera les valeurs de dégâts calculées lorsque vous exécuterez le script.

Testez la fonction calculate_weapon_damage()

Dans cette étape, vous allez tester la fonction calculate_weapon_damage() avec les données d'exemple fournies.

  1. Enregistrez le fichier calculate_weapon_damage.py.
  2. Ouvrez un terminal et accédez au répertoire /home/labex/project.
  3. Exécutez le script calculate_weapon_damage.py :
python calculate_weapon_damage.py

Vous devriez voir la sortie [3, 2], qui est le résultat attendu pour les données d'exemple données.

  1. Essayez de tester la fonction avec d'autres données d'entrée pour vous assurer qu'elle fonctionne correctement. Par exemple, vous pouvez essayer de passer [4, 5, 22] et [3, 2, 14] pour voir si la fonction renvoie une liste vide [] en raison de l'entrée invalide.

Félicitations! Vous avez réussi à implémenter la fonction calculate_weapon_damage() pour calculer les valeurs de dégâts des deux armes lasers.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.