はじめに
このプロジェクトでは、銀河帝国の兵器研究所が開発した 2 種類の高性能レーザー兵器のダメージ値を計算する方法を学びます。兵器装備実験は、兵器の値をテストする責任があり、あなたはダメージ計算プロセスを実装することで彼らを支援します。
$ python calculate_weapon_damage.py
[3, 2]
🎯 タスク
このプロジェクトでは、以下を学びます。
- プロジェクト環境を設定し、必要なファイルを作成する方法
- 2 種類のレーザー兵器のダメージ値を計算する
calculate_weapon_damage()関数を実装する方法 - 提供されたサンプルデータを使って
calculate_weapon_damage()関数をテストする方法
🏆 成果
このプロジェクトを完了すると、以下ができるようになります。
- レーザー兵器のダメージ計算の問題文と要件を理解する
- 連立一次方程式を解く関数を実装し、レーザー兵器のダメージ値を計算する
- 異なる入力データを使って実装した関数をテストし、正しく機能することを確認する
- 問題解決とプログラミングのスキルを実際のシナリオに適用する
プロジェクト環境をセットアップする
このステップでは、プロジェクト環境を設定し、プロジェクトに必要なファイルを変更します。
- テキストエディタで
calculate_weapon_damage.pyファイルを開きます。 - ファイルの先頭に、次のインポート文を追加します。
from typing import List
これにより、コードで List 型アノテーションを使用できるようになります。
calculate_weapon_damage() 関数を実装する
このステップでは、2 種類のレーザー兵器のダメージ値を計算する 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]を渡してみることができます。
おめでとうございます!2 種類のレーザー兵器のダメージ値を計算する calculate_weapon_damage() 関数を正常に実装しました。
まとめ
おめでとうございます!このプロジェクトを完了しました。あなたのスキルを向上させるために、LabEx でさらに多くの実験を行って練習してください。



