我正在嘗試為學校錦標賽制作排行榜。我開始要求用戶輸入一些團隊名稱以及團隊中有多少成員。現在我希望能夠詢問用戶;“誰贏了比賽?” 然后將該球隊的得分調整 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
uj5u.com熱心網友回復:
您需要迭代團隊以找到具有好名稱的團隊以更新高分
def score(teams):
winner = input('Which Team Won the Event? ')
for team in teams:
if team.name == winner:
team.add_victory()
break
然后一些更好的命名和類變成
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}'
uj5u.com熱心網友回復:
在這里思考您的方向,我認為這有助于消除對課程的一些誤解(或者我和其他人認為的誤解)。
簡而言之,類是一個物件,它就像一個事物的表示。在你的情況下, aTeam是一件事。它有成員數量、名稱、數字等。所以你的班級應該命名為“團隊”而不是“AllTeams”。
同樣,aGame是一個東西。它具有主隊、客隊、比賽日期、主客隊得分、場地等屬性。它可能具有使用得分的“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!")
有一百萬種方法可以解決這個問題,但我覺得這會讓你朝著正確的方向前進。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451255.html
下一篇:如何根據用戶輸入的數字選擇變數
