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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1452閲覧

リストを途中から処理する方法について

HaTea

総合スコア16

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/06/22 03:37

前提・実現したいこと

野球ゲームのプログラムを書いているのですが、
作った打順をリストに格納してヒットかアウト判定する関数に入れた所
1回の処理を終えてしまうと1番打者に戻ってしまいます。
打順なので処理を終えた所からリストを読み込める様にしたい。

該当のソースコード

python

1# bは塁打。ホームランも4塁打として扱えば良い。 2def hit(base_state, b): 3 # どの塁までランナーが到達したか。3塁のあとは4塁,5塁と突き進む。 4 ret = [] 5 point = 0 6 if b == 0: 7 for e in base_state: 8 ret.append(e) 9 return ret, point 10 else: 11 new_state = [b] 12 for e in base_state: 13 new_state.append(e+b) 14 # 4塁を超えたランナーをホームインさせる。 15 for e in new_state: 16 if e < 4: 17 ret.append(e) 18 else: 19 point += 1 20 21 # ベース上の状況と、今の打席の点数を返す。 22 return ret, point

python

1#選手毎のデータ読み込み 2base_defn = 3 3def pro_name(pros): 4 state = [] 5 total_point=[] 6 out = 0 7 point = 0 8 while True: 9 for pro in pros: 10 one_date = df3.loc[[pro],['安打','二塁打','三塁打','本塁打','打率(割合)']] 11 for index, row in one_date.iterrows(): 12 #選手名 13 name = index 14 #安打数 15 a_bat = row[0] + row[1] + row[2] + row[3] 16 #安打数からの単打の割合 17 a_hit = row[0] / a_bat 18 #安打数からの二塁打の割合 19 two = row[1] / a_bat + a_hit 20 #安打数からの三塁打の割合 21 thr = row[2] / a_bat + two 22 #打率 23 atta = row[4] 24 coin1 = random.random() 25 coin2 = random.random() 26 #3の数字は後に相手投手の防御率が入る。 27 print('-'*16) 28 if coin1 < (atta + 3 - base_defn): 29 if coin2 < a_hit: 30 print(name+'ヒット') 31 h = 1 32 elif coin2 < two: 33 print(name+'ツーベースヒット') 34 h = 2 35 elif coin2 < thr: 36 print(name+'スリーベースヒット') 37 h = 3 38 else: 39 print(name+'ホームラン!!!!!!!!!!!!!!!') 40 h = 4 41 else: 42 print(name+'アウト!') 43 out += 1 44 h = 0 45 print('-'*16) 46 state, point = hit(state, h) # 塁上の状況の更新。 47 print(f'只今{out}アウト') 48 if not state: 49 print('ランナーなし') 50 else: 51 print(f'ただいまランナー{state}塁') 52 print(f'{point}点入りました') 53 total_point.append(point) 54 print(f'只今{sum(total_point)}点') 55 if out == 3: 56 return print('チェンジ!!') 57 sys.exit()

python

1player=['荻野 貴司','角中 勝也','清田 育宏','井上 晴哉','加藤 翔平','藤岡 裕大','藤原 恭大','細谷 圭','三木 亮'] 2member = [player[i%9] for i in range(0,100)] 3for i in range(9): 4 pro_name(member)

補足情報(FW/ツールのバージョンなど)

python3.7

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下でいかがでしょうか?

python

1import itertools 2player = [ 3 '荻野 貴司', '角中 勝也', '清田 育宏', '井上 晴哉', 4 '加藤 翔平', '藤岡 裕大', '藤原 恭大', '細谷 圭', 5 '三木  亮', 6] 7gen = itertools.cycle(player) 8 9# 27アウトになるまで(延長を考慮しなければ)、gen.__next__()を呼び出せば、 10# バッターが生成されます。 11gen.__next__() # 荻野 貴司 12gen.__next__() # 角中 勝也

投稿2020/06/22 06:49

hasami

総合スコア1277

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

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

HaTea

2020/06/22 10:28

import itertools player=['荻野 貴司','角中 勝也','清田 育宏','井上 晴哉','加藤 翔平','藤岡 裕大','藤原 恭大','細谷 圭','三木 亮'] member = [player[i%9] for i in range(0,100)] gen = itertools.cycle(member) for i in range(9): pro_name(gen) で9回まで打順通り回すことが出来ました!ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問