はじめに
神秘と魔法に満ちた魅惑的な海の世界で、海賊が危険な海を航行するだけでなく、神秘的な魔法の流れも操る世界に、航海と呪文術の両方で強力なスキルで知られる伝説がある。それは、呪われた悪名高い海賊船長マゼランである。マゼランが Python の共通標準ライブラリの力を活用する能力は、ライバルの海賊を欺いて隠された宝を見つける彼の成功の礎となっている。
マゼランの船員の一人として、あなたの探求は、あなたの船を一連のチャレンジに導き、同じ強力な Python ライブラリセットを習得することです。公海で最も恐れられる船、魔法の荒れ狂う者の運命はあなたの手にかかっています。あなたは Python のコードを受け入れ、船長マゼランにとって貴重な資産になれますか?これからの冒険は、あなたのスキルと機知を同じ程度に試すでしょう!
数学と日付時刻を使った航海
このステップでは、近い将来の旅のコースを計画する任務が与えられます。mathモジュールを使って最適なルートを計算し、datetimeモジュールの助けを借りて到着時刻を推定します。
まず、~/projectディレクトリにあるchart_course.pyという名前のスクリプトを開きます。このスクリプトは、緯度と経度の座標に基づいて次の目的地までの距離を計算します。
import math
## 現在の位置と目的地の座標(度)
current_location = (0, 0)
destination = (10, 10)
def calculate_distance(loc1, loc2):
## 度をラジアンに変換
lat1, lon1 = map(math.radians, loc1)
lat2, lon2 = map(math.radians, loc2)
## ヘイバーシン公式
dlon = lon2 - lon1
dlat = lat2 - lat1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon/2)**2
c = 2 * math.asin(math.sqrt(a))
r = 6371 ## 地球の半径(キロメートル)
return c * r
## 距離を推定
distance = calculate_distance(current_location, destination)
print(f"目的地までの距離は{distance:.2f}キロメートルです。")
次に、datetimeを使って到着時刻を推定します。
from datetime import datetime, timedelta
## 平均船速を 10km/h とする
average_speed = 10
## 到着時刻を計算
time_to_destination = timedelta(hours=distance / average_speed)
arrival_time = datetime.now() + time_to_destination
print(f"推定到着時刻:{arrival_time.strftime('%Y-%m-%d %H:%M:%S')}")
ターミナルで次のコマンドを実行してスクリプトを実行します。
python ~/project/chart_course.py
ターミナルには次の情報が表示されるはずです。
目的地までの距離は1568.52キロメートルです。
推定到着時刻: 2024-01-04 09:40:36
コレクションを使った在庫管理
船長マゼランは、Python のcollectionsモジュールの助けを借りて、在庫を整理し、アクセスしやすく保っています。あなたの任務は、collectionsモジュールのCounterを使って船の備品データを整理することです。
~/projectディレクトリにあるmanage_inventory.pyという名前のスクリプトを開きます。
from collections import Counter
## 在庫リスト
inventory = ['potion', 'dagger', 'potion', 'gold coin', 'gold coin', 'ruby']
inventory_counter = Counter(inventory)
## 在庫数を表示
for item, count in inventory_counter.items():
print(f"{item.title()}: {count}")
## アイテムを在庫に追加
loot = ['gold coin', 'emerald', 'potion']
inventory_counter.update(loot)
print("\n更新後の在庫:")
for item, count in inventory_counter.items():
print(f"{item.title()}: {count}")
在庫を管理するには、次のコマンドを実行します。
python ~/project/manage_inventory.py
ターミナルには次の情報が表示されるはずです。
Potion: 2
Dagger: 1
Gold Coin: 2
Ruby: 1
更新後の在庫:
Potion: 3
Dagger: 1
Gold Coin: 3
Ruby: 1
Emerald: 1
まとめ
この実験では、あなたは魔法と海の冒険の世界に送り込まれました。私たちは、船長マゼランが航海中に行うのと同じように、Python の共通標準ライブラリをチャレンジを乗り越えるためのツールとして利用する魅力的なシナリオをデザインしました。あなたはmathとdatetimeを使って地理的な計算を行い、collectionsを使って魔法のアイテムの在庫を管理し、追加の標準ライブラリを使ってファイルシステムやその他の一般的なタスクを行うようになりました。
あなたが各タスクを完了するにつれて、あなたはこれらのライブラリの使用に熟練するだけでなく、魔法の荒れ狂う者の成功した旅に貢献しました。これらの演習は、創造性と効率で実際の問題を解決できる効果的な Python プログラマーになるための基盤を築きました。知識の風があなたの帆を常に満たし続けますように!



