2
Help us understand the problem. What are the problem?

posted at

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

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

大学院の研究でグラフを描くために最近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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?