如何在我的代码中编辑 self.TeamScore 值
How to edit the self.TeamScore value in my code
我正在尝试制作学校锦标赛的排行榜。我开始要求用户输入一些团队名称以及团队中有多少成员。现在我想问用户; 'who won the game?' 然后将球队得分调整为 1。
如何根据用户输入更改团队分数?
class AllTeams:
def __init__(self, TeamNum, TeamName, TeamMembers, TeamScore):
self.TeamNum = TeamNum
self.TeamName = TeamName
self.TeamMembers = TeamMembers
self.TeamScore = TeamScore
def __repr__(self):
return f'Team Number: {self.TeamNum} |-| Team Name: {self.TeamName} |-| Member Count: {self.TeamMembers} |-| Team Score: {self.TeamScore}'
#teams = [AllTeams(i+1, "N/A", 0) for i in range(20)]
teams = []
TeamCounter=int(input('How many Teams will be in the tournament? '))
print('')
for i in range(TeamCounter):
NameOfTeam=input(f'Please Enter Team {i+1} Name: ')
MemberCount=input('How Many Members in Team? ')
print('')
teams.append( AllTeams( i+1, NameOfTeam, MemberCount, 0) )
def score():
for t in teams:
print(t)
GameWinner=input('Which Team Won the Event? ')
#change team score by 1
您需要迭代团队以找到名字好听的团队来更新高分
def score(teams):
winner = input('Which Team Won the Event? ')
for team in teams:
if team.name == winner:
team.add_victory()
break
然后更好的命名,class变成了
class Team:
def __init__(self, num, name, size, score):
self.num = num
self.name = name
self.size = size
self.score = score
def add_victory(self):
self.score += 1
def __repr__(self):
return f'Team Number: {self.num} |-| Team Name: {self.name} |-| Member Count: {self.size} |-| Team Score: {self.score}'
考虑到您在这里的指导,我认为这有助于消除对 classes 的一些误解(或者我和其他人认为的误解)。
简而言之,一个class就是一个对象,它就像一个事物的表象。在您的情况下, Team
是一回事。它有成员数、姓名、号码等。因此您的 class 应该命名为“Team”而不是“AllTeams”。
以同样的方式,Game
是一个东西。它具有主队、客队、比赛日期、主队和客队的比分、场地等属性。它可能有一个使用比分的方法,如“WhoWon()”判断是主队还是客队获胜。
仔细想想,分数是一场比赛的属性,而不是一支球队的属性,这是有道理的,因为一支球队很可能会在锦标赛期间打多场比赛,并且每场比赛都会有不同的得分。在 Team
.
中追踪会很痛苦
所以,考虑如下:
class Team:
#setting this outside of a method allows us to get it or set it outside of the class in the main code like a "global" for the class.
TeamName = ''
def __init__(self, TeamNum, TeamName, TeamMembers):
self.TeamNum = TeamNum
self.TeamName = TeamName
self.TeamMembers = TeamMembers
def __repr__(self):
return f'Team Number: {self.TeamNum} |-| Team Name: {self.TeamName} |-| Member Count: {self.TeamMembers} |-| Team Score: {self.TeamScore}'
class Game:
def __init__(self, game_number, home_team, away_team, home_team_score, away_team_score):
self.home_team = home_team
self.away_team = away_team
self.home_team_score = home_team_score
self.away_team_score = away_team_score
#a class method that returns the winner based on the scores
def winner(self):
if self.home_team_score > self.away_team_score:
return self.home_team
else:
return self.away_team
#instead of lists, use dictionaries so you can refer to a game by its number, or a team by its name without having to jump through hoops.
games={}
teams = {}
TeamCounter=int(input('How many Teams will be in the tournament? '))
print('')
for i in range(TeamCounter):
NameOfTeam=input(f'Please Enter Team {i+1} Name: ')
MemberCount=input('How Many Members in Team? ')
print('')
#Add to the teams dictionary.
teams[NameOfTeam] = Team( i+1, NameOfTeam, MemberCount)
#Lets collect info about the games in the tourny:
GameCounter=int(input("How many games are in the tournament?"))
for i in range(GameCounter):
home_team = input("what was the name of the home team?")
home_team_score = input("what was their score?")
away_team = input("what was the name of the away team?")
away_team_score = input("what was their score?")
#create the game object
this_game = Game(i, teams[home_team], teams[away_team], home_team_score, away_team_score)
#Once we have this one game made we can see who won. Note that we call the method `winner()` for `this_game` object which returns a `Team` object for which we can get it's attribute `TeamName`:
print("It looks like "+this_game.winner().TeamName+" won the game!")
有一百万种方法可以做到这一点,但我觉得这会让你朝着正确的方向前进。
我正在尝试制作学校锦标赛的排行榜。我开始要求用户输入一些团队名称以及团队中有多少成员。现在我想问用户; 'who won the game?' 然后将球队得分调整为 1。
如何根据用户输入更改团队分数?
class AllTeams:
def __init__(self, TeamNum, TeamName, TeamMembers, TeamScore):
self.TeamNum = TeamNum
self.TeamName = TeamName
self.TeamMembers = TeamMembers
self.TeamScore = TeamScore
def __repr__(self):
return f'Team Number: {self.TeamNum} |-| Team Name: {self.TeamName} |-| Member Count: {self.TeamMembers} |-| Team Score: {self.TeamScore}'
#teams = [AllTeams(i+1, "N/A", 0) for i in range(20)]
teams = []
TeamCounter=int(input('How many Teams will be in the tournament? '))
print('')
for i in range(TeamCounter):
NameOfTeam=input(f'Please Enter Team {i+1} Name: ')
MemberCount=input('How Many Members in Team? ')
print('')
teams.append( AllTeams( i+1, NameOfTeam, MemberCount, 0) )
def score():
for t in teams:
print(t)
GameWinner=input('Which Team Won the Event? ')
#change team score by 1
您需要迭代团队以找到名字好听的团队来更新高分
def score(teams):
winner = input('Which Team Won the Event? ')
for team in teams:
if team.name == winner:
team.add_victory()
break
然后更好的命名,class变成了
class Team:
def __init__(self, num, name, size, score):
self.num = num
self.name = name
self.size = size
self.score = score
def add_victory(self):
self.score += 1
def __repr__(self):
return f'Team Number: {self.num} |-| Team Name: {self.name} |-| Member Count: {self.size} |-| Team Score: {self.score}'
考虑到您在这里的指导,我认为这有助于消除对 classes 的一些误解(或者我和其他人认为的误解)。
简而言之,一个class就是一个对象,它就像一个事物的表象。在您的情况下, Team
是一回事。它有成员数、姓名、号码等。因此您的 class 应该命名为“Team”而不是“AllTeams”。
以同样的方式,Game
是一个东西。它具有主队、客队、比赛日期、主队和客队的比分、场地等属性。它可能有一个使用比分的方法,如“WhoWon()”判断是主队还是客队获胜。
仔细想想,分数是一场比赛的属性,而不是一支球队的属性,这是有道理的,因为一支球队很可能会在锦标赛期间打多场比赛,并且每场比赛都会有不同的得分。在 Team
.
所以,考虑如下:
class Team:
#setting this outside of a method allows us to get it or set it outside of the class in the main code like a "global" for the class.
TeamName = ''
def __init__(self, TeamNum, TeamName, TeamMembers):
self.TeamNum = TeamNum
self.TeamName = TeamName
self.TeamMembers = TeamMembers
def __repr__(self):
return f'Team Number: {self.TeamNum} |-| Team Name: {self.TeamName} |-| Member Count: {self.TeamMembers} |-| Team Score: {self.TeamScore}'
class Game:
def __init__(self, game_number, home_team, away_team, home_team_score, away_team_score):
self.home_team = home_team
self.away_team = away_team
self.home_team_score = home_team_score
self.away_team_score = away_team_score
#a class method that returns the winner based on the scores
def winner(self):
if self.home_team_score > self.away_team_score:
return self.home_team
else:
return self.away_team
#instead of lists, use dictionaries so you can refer to a game by its number, or a team by its name without having to jump through hoops.
games={}
teams = {}
TeamCounter=int(input('How many Teams will be in the tournament? '))
print('')
for i in range(TeamCounter):
NameOfTeam=input(f'Please Enter Team {i+1} Name: ')
MemberCount=input('How Many Members in Team? ')
print('')
#Add to the teams dictionary.
teams[NameOfTeam] = Team( i+1, NameOfTeam, MemberCount)
#Lets collect info about the games in the tourny:
GameCounter=int(input("How many games are in the tournament?"))
for i in range(GameCounter):
home_team = input("what was the name of the home team?")
home_team_score = input("what was their score?")
away_team = input("what was the name of the away team?")
away_team_score = input("what was their score?")
#create the game object
this_game = Game(i, teams[home_team], teams[away_team], home_team_score, away_team_score)
#Once we have this one game made we can see who won. Note that we call the method `winner()` for `this_game` object which returns a `Team` object for which we can get it's attribute `TeamName`:
print("It looks like "+this_game.winner().TeamName+" won the game!")
有一百万种方法可以做到这一点,但我觉得这会让你朝着正确的方向前进。