質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

550閲覧

AIphaImpact 競馬 馬柱で競馬データを整理

nam19

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/11/23 15:14

編集2018/11/28 15:26

前提・実現したいこと

https://alphaimpact.jp/2017/02/02/horse-table/
のサイトを見て,簡易な馬柱を作成する際にエラーが発生しました.

発生している問題・エラーメッセージ

for i, horse in enumerate(self.horse):
TypeError: 'Horse' object is not iterable

該当のソースコード

python3

1class HorseTable(object): 2 """ 3 馬柱クラス 4 """ 5 6 def __init__(self, race, horses): 7 """ 8 :param race: Raceクラス 9 :type race: Race 10 :param horses: Horseクラスのリスト. 馬番順に格納 11 :type horses: list of Horse 12 """ 13 self.race = race 14 self.horses = horses 15 16 def print_table(self): 17 """ 18 簡易馬柱を表示する 19 """ 20 # レース名の表示 21 print(self.race.get_race_title()) 22 23 # 馬番+馬名の表示 24 for i, horse in enumerate(self.horses): 25 horse_no = i + 1 26 print("{}. {}".format(horse_no, horse.get_name())) 27 28class Race(object): 29 """ 30 レースクラス 31 """ 32 33 def __init__(self, race_key, program, holding, payback=None): 34 """ 35 :param race_key: レースキー 36 :param program: レース情報 37 :param holding: 開催情報 38 :param payback: 払戻情報 39 """ 40 self.race_key = race_key 41 self.program = program 42 self.holding = holding 43 self.payback = payback 44 45 def get_race_title(self): 46 """ 47 レース名を取得する 48 """ 49 return self.program["レース名"] 50 51 52class Horse(object): 53 """ 54 馬クラス 55 """ 56 57 def __init__(self, horse_id, horse_profile, horse_race, race_results): 58 """ 59 :param horse_id: 血統登録番号 60 :param horse_profile: 馬属性情報 61 :param horse_race: 馬毎レース情報 62 :param race_results: 過去戦績のリスト 63 """ 64 self.horse_id = horse_id 65 self.horse_profile = horse_profile 66 self.horse_race = horse_race 67 self.race_results = race_results 68 69 def get_name(self): 70 """ 71 馬名を取得する 72 """ 73 return self.horse_profile["馬名"] 74#馬 75horse_id = DataFrame(keiba_data_set[['血統登録番号']]) 76horse_profile = DataFrame(keiba_data_set[['馬名','性別','年齢','所属','脚質']]) 77horse_profile = pd.get_dummies(horse_profile,columns=['性別','所属']) 78horse_profile['脚質'] = horse_profile['脚質'].map({'逃げ':1, '先行':2, '中団':3,'後方':4,'差し':5,'追込':6,'マクリ':7}) 79horse_race = DataFrame(keiba_data_set[['馬番','騎手名','騎手コード','馬体重','負担荷重','人気','賞金','単勝オッズ']]) 80race_results = DataFrame(keiba_data_set[['着差タイム','走破タイム(秒)','通過順1角','通過順2角','通過順3角','通過順4角','あがり3Fタイム','確定着順']]) 81 82#レース 83race_key = DataFrame(keiba_data_set[['レース名']]) 84program = DataFrame(keiba_data_set[['レース名','距離','頭数','トラックコード','クラスコード','1着本賞金']]) 85holding = DataFrame(keiba_data_set[['年','月','日','場所','天候','馬場状態']]) 86 87#出力 88instance_race = Race(race_key,program,holding) 89instance_horse = Horse(horse_id,horse_profile,horse_race,race_results) 90instance_HorseTable = HorseTable(instance_race,instance_horse) 91instance_HorseTable.print_table()

試したこと

出力でのエラーなのか
classに何を渡せば解決するのかがわかりません

補足情報

年 月 日 場所 距離 天候 レース名 馬場状態 トラックコード 頭数 クラスコード 1着本賞金 馬番 馬名 性別 年齢 騎手名 騎手コード 馬体重 負担荷重 人気 賞金 所属 血統登録番号 単勝オッズ 脚質 着差タイム 走破タイム(秒) 通過順1角 通過順2角 通過順3角 通過順4角 あがり3Fタイム 確定着順
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 1 デルマヨタロウ 牡 2 津村明秀 1092 458 54 14 0 美 2012101850 166.4 先行 0.8 90.7 0 4 4 2 36.5 7
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 2 ネコレーヌ 牝 2 井上敏樹 1151 414 51 13 0 美 2012101899 124.2 後方 1 90.9 0 13 14 13 35.6 8
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 3 ピックアンドポップ 牡 2 吉田隼人 1095 470 54 5 0 美 2012102545 12.4 後方 0.8 90.7 0 13 13 13 35.9 6
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 4 サトノアッシュ 牡 2 秋山真一 1019 454 54 1 75 栗 2012101359 3 追込 0.4 90.3 0 10 11 11 35.6 4
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 5 マコトグナイゼナウ 牡 2 藤岡康太 1116 430 54 2 500 栗 2012104840 3.3 逃げ 0 89.9 0 1 1 1 35.9 1
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 6 ブラックバード 牡 2 長岡禎仁 1142 454 51 8 50 栗 2012101504 30.2 中団 0.4 90.3 0 12 8 8 35.9 5
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 7 マイネルシアトル 牡 2 松岡正海 1085 436 54 6 0 栗 2012105276 17.1 後方 1.3 91.2 0 10 11 11 36.5 11
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 8 ムーンビューティ 牝 2 丹内祐次 1091 432 54 10 0 美 2012102528 34.1 先行 1.1 91 0 2 2 2 36.9 9
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 9 ウインアキレア 牝 2 三浦皇成 1122 444 54 4 130 栗 2012100229 7.5 先行 0.2 90.1 0 8 8 4 35.7 3
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 10 ミトノゴールド 牡 2 古川吉洋 1015 470 54 9 0 栗 2012103207 31.6 中団 2.2 92.1 0 4 6 9 37.8 14
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 11 ダンヴィル 牡 2 丸田恭介 1117 450 54 12 0 栗 2012101582 112.2 先行 1.3 91.2 0 4 6 4 36.9 10
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 12 ジョウショーチカラ 牡 2 藤田伸二 705 504 54 11 0 栗 2012100260 109.7 先行 1.5 91.4 0 4 4 4 37.2 12
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 13 ゴールドエッグ 牡 2 丸山元気 1127 452 54 7 0 美 2012103557 27.4 先行 2.1 92 0 2 2 4 37.9 13
14 7 26 札幌 1500 曇 未勝利* 良 0 14 7 500 14 ディープフォルツァ 牡 2 岩田康誠 5203 422 54 3 200 栗 2012104292 5.3 差し 0 89.9 0 9 8 9 35.4 2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2018/11/23 21:26

ソースコードはコードブロックで囲んでください。
guest

回答1

0

ベストアンサー

コメントに「Horseクラスのリスト. 馬番順に格納」と記載されています。
よってHorseインスタンスのリストを渡せばよいはずです。

Python

1race = Race(123,{'レース名':'レースあ'},'開催情報') 2horses = [ 3 Horse(0,{'馬名':'馬あ'},0,['過去戦績のリストあ']), 4 Horse(1,{'馬名':'馬い'},1,['過去戦績のリストい'])] 5tbl = HorseTable(race,horses) 6tbl.print_table() 7""" 8レースあ 91. 馬あ 102. 馬い 11"""

投稿2018/11/24 00:57

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問