2017年3月7日火曜日

Python競馬予想プログラミング【3】~最初は力業で試してみる~

数学の数列の問題を解くときに若干似ていますが、法則性を与えてルール化するためにはまずルール作りをしっかり決めなければなりません。

いきなり格好良くループを作るよりは、地味~にどこの値を取得してどうするのかを把握することが大切です。いきなりあれもこれもクリアする条件の式を書こうとすると、無駄に長くてわかりにくい式になります。変数をちゃんと使ってわかりやすく作業していきましょう

ということで、今回はほぼ同じスタイルの読み込みの繰り返しを行うコードを作成しました。

Python競馬予想プログラミング【2】~Excelファイルを読み込む~ と同じExcelファイルを使用してください

import xlrd
import os.path
xlsfile ="2016010506.xls"
if os.path.exists(xlsfile):
xls = xlrd.open_workbook(xlsfile)
sheet1 = xls.sheet_by_index(0)
"""
レース情報
"""
basho = sheet1.cell(0,0).value.split(" ")[3]
race = sheet1.cell(1,0).value.split(" ")[3]
baba = race[:1]
kyori = race[1:5]
print (basho)
print (baba)
print (kyori)
"""
着順・馬番・馬名・騎手・人気・単勝
"""
chakujun =[]
umabanjun =[]
bameijun =[]
kishujun = []
ninkijun =[]
tanshoujun =[]
for i in range (4,22):
chaku = sheet1.cell(i,0).value.split(" ")
if "" in chaku:
chaku.remove("")
chakujun += chaku
for i in range (4,22):
umaban = sheet1.cell(i,1).value.split(" ")
if "" in umaban:
umaban.remove("")
umabanjun += umaban
for i in range (4,22):
bamei = sheet1.cell(i,2).value.split(" ")
if "" in bamei:
bamei.remove("")
bameijun += bamei
for i in range (4,22):
kishu = sheet1.cell(i,4).value.split(" ")
if "" in kishu:
kishu.remove("")
kishujun += kishu
for i in range (4,22):
ninki = sheet1.cell(i,9).value.split(" ")
if "" in ninki:
ninki.remove("")
ninkijun += ninki
for i in range (4,22):
tanshou = sheet1.cell(i,10).value.split(" ")
if "" in tanshou:
tanshou.remove("")
if "" in tanshou:
tanshou.remove("")
tanshoujun += tanshou
print (chakujun)
print (umabanjun)
print (bameijun)
print (kishujun)
print (ninkijun)
print (tanshoujun)
view raw 03071 hosted with ❤ by GitHub


長いですが着順から下はほぼ同じなので着順のところだけ解説を載せます


for i in range (4,22):
#最高18頭立てなので、マジックナンバーで入れといてかまわないと思います
4~22(1頭目~18頭目)までのループを作ります

    chaku = sheet1.cell(i,0).value.split(" ")
#着順の値を取得し、.valueで文字列に変換します
#.split(" ")でスペース区切りでリストを作成します
  =>["", "1"] (最初の出力結果)

    if "" in chaku:
#最初の空の要素は邪魔なので消します。 chakuのなかに""があれば~

        chaku.remove("")
#""を消す

    chakujun += chaku
#予めつくっておいた空のchakujunリストにchakuを代入して付け足していく




これで一応 場所・馬場・距離・着順・馬番・馬名・騎手・人気・単勝
のデータを取得できました


基本的にはあとはこの作業を単純化し、すべてのExcelファイルに適用していくだけです

道筋は見えています。

少しずつ進めていきましょう

<<<Python競馬予想プログラミング【2】~Excelファイルを読み込む~


0 件のコメント:

コメントを投稿