プレイヤーのスコア【詳細】

program
# プレイヤーのスコア
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. スコア順にソート

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点)

まとめ

このコードは次の流れで動作します:

  1. プレイヤーのスコアを格納したリストを用意。
  2. スコア順に降順ソート。
  3. ソート後、ランキングとして順位、名前、スコアを整形して表示。

非常に汎用的なコードで、ゲームのランキング表示や、コンペの順位付けなどに応用できます!

コメント

タイトルとURLをコピーしました
//投稿内コードにコピー表示 //コピー表示ここまで