ホームチーム、離れたチーム、そしてゲームの結果を入れることができるプログラムを書いています。私はチームのデータをこれに応じて変更するようにしたいと思います。しかし、私は "ポイント"、 "ゴール差"、 "プレー"(ゲーム)を変更することはできません! 他の属性の値で計算される属性の作成
class team:
def __init__(self, name, wins, drawn, losses, goals_for, goals_against):
self.name = name
self.wins = int(wins)
self.drawn = int(drawn)
self.losses = int(losses)
self.goals_for = int(goals_for)
self.goals_against = int(goals_against)
self.goals_difference = (self.goals_for - self.goals_against)
self.points = ((self.wins * 3) + self.drawn)
self.played = (self.wins + self.drawn + self.losses)
def __repr__(self):
return 'Name:{} P:{} W:{} D:{} L:{} GF:{} GA:{} GD:{} PTS:{}'.format(self.name, self.played, self.wins, self.drawn, self.losses, self.goals_for, self.goals_against, self.goals_difference, self.points)
detroit_red_wings = team("Detroit", 1, 0, 3, 4, 5)
los_angeles_kings = team("LA", 0, 1, 4, 3, 7)
toronto_maple_leafs = team("Toronto", 1, 2, 2, 3, 6)
teamlist = [detroit_red_wings, los_angeles_kings, toronto_maple_leafs]
print(teamlist)
class data_input:
def home_team_input(self):
home_team = input("Type in the home team: ")
for i in teamlist:
if i.name == home_team:
return i
def away_team_input(self):
away_team = input("Type in the away team: ")
for t in teamlist:
if t.name == away_team:
return t
def result_input(self):
goals_home_team = int(input("Type in the number of goals made by the home team: "))
goals_away_team = int(input("Type in the number of goals made by the away team: "))
return (goals_home_team, goals_away_team)
def adding_result():
home_team = data_input.home_team_input()
away_team = data_input.away_team_input()
goals_home_team, goals_away_team = data_input.result_input()
home_team.goals_for += goals_home_team
home_team.goals_against += goals_away_team
away_team.goals_for += goals_away_team
away_team.goals_against += goals_home_team
if goals_home_team > goals_away_team:
home_team.wins += 1
away_team.losses += 1
if goals_home_team < goals_away_team:
away_team.wins += 1
home_team.losses += 1
if goals_home_team == goals_away_team:
home_team.drawn += 1
away_team.drawn += 1
data_input = data_input()
adding_result()
print(teamlist)
は、私はクラス
team
の
__init__
方法で属性の指示を書いて、あなたがポイントを見ることができるよう
wins
に依存します。これは私がこれまでに書いたコードです。これはすべてオブジェクトを作成するときに機能しますが、新しいゲームの結果を入れたとき
points
は変更されません(
played
または
goals_difference
は変更されません)。これは、私がゲームの結果を
input
関数で打ち込むと、他の属性が変わるので私を驚かせます。あなたの
__init__
方法は再びあなたが他のプロパティを更新した後に実行されていないため、
これはうまくいった!どうもありがとうございます!! –
個別の更新機能を持つことはひどいことです。計算された結果は@propertiesまたは関数を介してアクセスされ、他のアイテムの現在の状態に対して常に正確になるようにする必要があります。 –
@SteveCohen良い点、私は現時点で私の答えを更新することはできませんが、私は急いで、私はシンプルにしようとしていたが、この場合シンプルさはちょうど悪い習慣です。 – miradulo