# プレイヤーのスコア
scores = [
{"name": "Alice", "score": 150},
{"name": "Bob", "score": 200},
{"name": "Charlie", "score": 100}
]
# スコア順にソート
sorted_scores = sorted(scores, key=lambda x: x["score"], reverse=True)
# ランキング表示
for rank, player in enumerate(sorted_scores, start=1):
print(f"{rank}位: {player['name']} ({player['score']}点)")
このコードは、複数のプレイヤーのスコアを管理し、それをスコア順にソートした後、ランキング形式で表示するプログラムです。以下、各部分を詳しく説明します。
1. プレイヤーのスコアのデータ構造
scores = [
{"name": "Alice", "score": 150},
{"name": "Bob", "score": 200},
{"name": "Charlie", "score": 100}
]
- 内容:
scores
はリストで、各プレイヤーのスコアを辞書形式で格納しています。- 各辞書には2つのキーがあります:
"name"
:プレイヤーの名前(例: “Alice”)"score"
:プレイヤーのスコア(例: 150)
- 各辞書には2つのキーがあります:
- このデータは、ランキング計算の対象となります。
2. スコア順にソート
sorted_scores = sorted(scores, key=lambda x: x["score"], reverse=True)
sorted()
関数:- リストをソートする関数です。この場合、
scores
リストをスコア("score"
)の値に基づいてソートします。
- リストをソートする関数です。この場合、
key=lambda x: x["score"]
:- ソートの基準を指定しています。ここでは、各辞書の中の
"score"
の値を基準にしています。
- ソートの基準を指定しています。ここでは、各辞書の中の
reverse=True
:- 降順(大きい順)にソートします。これにより、スコアが高い順に並びます。
ソート後の内容:
ソートされた sorted_scores
は次のようになります:
[
{"name": "Bob", "score": 200},
{"name": "Alice", "score": 150},
{"name": "Charlie", "score": 100}
]
3. ランキング表示
for rank, player in enumerate(sorted_scores, start=1):
print(f"{rank}位: {player['name']} ({player['score']}点)")
enumerate()
:- リスト
sorted_scores
をループ処理しながら、インデックス(ランキングの番号)を一緒に取得します。 start=1
を指定することで、インデックスが0ではなく1から始まります(1位、2位、3位…と表示するため)。
- リスト
f"{rank}位: {player['name']} ({player['score']}点)"
:- フォーマット文字列を使ってランキング結果を整形して表示します。
- 各要素の
rank
(順位)、player['name']
(名前)、player['score']
(スコア)を埋め込んでいます。
実行結果
実行すると、次のようにスコア順に並んだランキングが表示されます:
1位: Bob (200点)
2位: Alice (150点)
3位: Charlie (100点)
まとめ
このコードは次の流れで動作します:
- プレイヤーのスコアを格納したリストを用意。
- スコア順に降順ソート。
- ソート後、ランキングとして順位、名前、スコアを整形して表示。
非常に汎用的なコードで、ゲームのランキング表示や、コンペの順位付けなどに応用できます!
コメント