Python でチェス 'Swiss' トーナメント マネージャーを作成しようとしています。マッチ クラスとプレーヤー クラスの 2 つのクラスがあります。また、文字列名をオブジェクトにバインドする name_object と、Player オブジェクトの名前を Player オブジェクトのスコア (1.0、2.5 など) にバインドする name_score という 2 つの辞書もあります。
変数の例
name_object = {'Jim' : Object, 'Jack' : Object}
name_score = {'Jim': 2.5, 'Jack' : 1.0}
私のクラス
class Player:
def __init__(self, name, gender, rating, score):
self.name = name
self.gender = gender
self.rating = rating
self.score = score
class Match:
def __init__(self, white, black):
self.white = white
self.black = black
def Result(self, res):
global name_object, name_score
complete = False
if res == 1:
if complete == False:
name_object[self.white].score += 1
name_score[self.white] += 1
complete = True
elif res == 0:
if complete == False:
name_object[self.black].score += 1
name_score[self.black].score += 1
complete = True
elif res == 'd':
if complete == False:
name_object[self.white].score += .5
name_score[self.white] += .5
name_object[self.black].score += .5
name_score[self.black].score += .5
しかし、'Jim' と 'Jack' の 2 つのプレイヤー名でオブジェクトを作成しようとすると、
Match1 = Match(name_object['Jim'], name_object['Jack'])
そして白が勝って Result メソッドを呼び出してみます。
Match1.Result(1)
このエラーが発生します。
line 43, in Result
name_object[self.white].score += 1
KeyError: <__main__.Player object at 0x02AB6DF0>
すべての助けに感謝します