7
3

More than 1 year has passed since last update.

Pythonでポケモン御三家の種族値をソートする

Posted at

初投稿 & タイトルの通りです。

大学院の研究でグラフを描くために最近Pythonを使っているのですが「どうせなら言語丸ごと習得してしまうか~」と思い立ち、着想から約2~3時間ほどで書きました。

ご指摘やアドバイスの他、「こういう機能作ったらいいんじゃない?」などありましたら是非コメントいただけますと大変有り難いです。

import pprint

    #御三家の種族値のタプルリスト
pokemon_data = [
    ("フシギバナ", 80, 82, 83, 100, 100, 80, 525),
    ("メガニウム", 80, 82, 100, 83, 100, 80, 525),
    ("ジュカイン", 70, 85, 65, 105, 85, 120, 530),
    ("ドダイトス", 95, 109, 105, 75, 85, 56, 525),
    ("ジャローダ", 75, 75, 95, 75, 95, 113, 528),
    ("ブリガロン", 88, 107, 122, 74, 75, 64, 530),
    ("ジュナイパー", 78, 107, 75, 100, 100, 70, 530),
    ("ゴリランダー", 100, 125, 90, 60, 70, 85, 530),
    ("リザードン", 78, 84, 78, 109, 85, 100, 534),
    ("バクフーン", 78, 84, 78, 109, 85, 100, 534),
    ("バシャーモ", 80, 120, 70, 110, 70, 80, 530),
    ("ゴウカザル", 76, 104, 71, 104, 71, 108, 534),
    ("エンブオー", 110, 123, 65, 100, 65, 65, 528),
    ("マフォクシー", 75, 69, 72, 114, 100, 104, 534),
    ("ガオガエン", 95, 115, 90, 80, 90, 60, 530),
    ("エースバーン", 80, 116, 75, 65, 75, 119, 530),
    ("カメックス", 79, 83, 100, 85, 105, 78, 530),
    ("オーダイル", 85, 105, 100, 79, 83, 78, 530),
    ("ラグラージ", 100, 110, 90, 85, 90, 60, 535),
    ("エンペルト", 84, 86, 88, 111, 101, 60, 530),
    ("ダイケンキ", 95, 100, 85, 108, 70, 70, 528),
    ("ゲッコウガ", 72, 95, 67, 103, 71, 122, 530),
    ("アシレーヌ", 80, 74, 74, 126, 116, 60, 530),
    ("インテレオン", 70, 85, 65, 125, 65, 120, 530),
]

def hyouzi(a):
    print("('ポケモン', HP, こうげき, ぼうぎょ, とくこう, とくぼう, すばやさ)")
    pprint.pprint(a)
    print("ソートが完了しました。")
    
while True:
    num_str = input("ソートする種族値を入力して下さい。(0:HP 1:こうげき 2:ぼうぎょ 3:とくこう 4:とくぼう 5:すばやさ 6:合計種族値)")
    num = int(num_str)

    if num == 0:
        pokemon_data.sort(key=lambda tup: tup[1], reverse=True)
        print("HPの高い順に並び替えます。")
        hyouzi(pokemon_data)
    elif num == 1:
        pokemon_data.sort(key=lambda tup: tup[2], reverse=True)
        print("こうげきの高い順に並び替えます。")
        hyouzi(pokemon_data)
    elif num == 2:
        pokemon_data.sort(key=lambda tup: tup[3], reverse=True)
        print("ぼうぎょの高い順に並び替えます。")
        hyouzi(pokemon_data)
    elif num == 3:
        pokemon_data.sort(key=lambda tup: tup[4], reverse=True)
        print("とくこうの高い順に並び替えます。")
        hyouzi(pokemon_data)
    elif num == 4:
        pokemon_data.sort(key=lambda tup: tup[5], reverse=True)
        print("とくぼうの高い順に並び替えます。")
        hyouzi(pokemon_data)
    elif num == 5:
        pokemon_data.sort(key=lambda tup: tup[6], reverse=True)
        print("すばやさの高い順に並び替えます。")
        hyouzi(pokemon_data)
    elif num == 6:
        pokemon_data.sort(key=lambda tup: sum(tup[1:7]), reverse=True)
        print("合計種族値の高い順に並び替えます。")
        hyouzi(pokemon_data)
    else:
        print("ソートできませんでした。")
    
    num2_str=input("ソートを終了しますか?(0:はい それ以外の数字:いいえ)")
    num2 = int(num2_str)
    if num2 == 0:
        break
    else:
        continue
7
3
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3