import random
class Player:
def __init__(self, name):
self.name = name
self.points = 0
self.goals_scored = 0
self.goals_conceded = 0
self.results = {}
def goal_difference(self):
return self.goals_scored - self.goals_conceded
def add_result(self, opponent, my_goals, opponent_goals):
if my_goals > opponent_goals:
self.points += 3
elif my_goals == opponent_goals:
self.points += 1
self.goals_scored += my_goals
self.goals_conceded += opponent_goals
self.results[opponent.name] = (my_goals, opponent_goals)
def generate_fixtures(players):
n = len(players)
fixtures = []
for j in
range(i
+ 1, n
): fixtures.append((players[i], players[j]))
return fixtures
def display_table(players):
players
= sorted
(players
, key=lambda p
: (-p
.points
, -p
.goal_difference
(), -p
.goals_scored
))
for i in
range(len
(players
) - 1): if players[i].points == players[i+1].points:
result = players[i].results[players[i+1].name]
if result[0] < result[1]:
players[i], players[i+1] = players[i+1], players[i]
elif result[0] == result[1] and players[i].goal_difference() < players[i+1].goal_difference():
players[i], players[i+1] = players[i+1], players[i]
elif result[0] == result[1] and players[i].goal_difference() == players[i+1].goal_difference():
if players[i].goals_scored < players[i+1].goals_scored:
players[i], players[i+1] = players[i+1], players[i]
print("Rank | Player Name | Points | Goal Difference | Goals Scored")
print("-------------------------------------------------------------")
for rank, player in enumerate(players, start=1):
print(f"{rank}. {player.name} {player.points} {player.goal_difference()} {player.goals_scored}")
def main():
num_players = int(input("Enter number of players: "))
players
= [Player
(input
(f
"Enter name for player {i+1}: ")) for i in
range(num_players
)]
fixtures = generate_fixtures(players)
for home, away in fixtures:
print(f"\nFixture: {home.name} vs {away.name}")
home_goals = int(input(f"Enter goals scored by {home.name}: "))
away_goals = int(input(f"Enter goals scored by {away.name}: "))
home.add_result(away, home_goals, away_goals)
away.add_result(home, away_goals, home_goals)
display_table(players)
if __name__ == "__main__":
main()
aW1wb3J0IHJhbmRvbQpjbGFzcyBQbGF5ZXI6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYucG9pbnRzID0gMAogICAgICAgIHNlbGYuZ29hbHNfc2NvcmVkID0gMAogICAgICAgIHNlbGYuZ29hbHNfY29uY2VkZWQgPSAwCiAgICAgICAgc2VsZi5yZXN1bHRzID0ge30KCiAgICBkZWYgZ29hbF9kaWZmZXJlbmNlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmdvYWxzX3Njb3JlZCAtIHNlbGYuZ29hbHNfY29uY2VkZWQKCiAgICBkZWYgYWRkX3Jlc3VsdChzZWxmLCBvcHBvbmVudCwgbXlfZ29hbHMsIG9wcG9uZW50X2dvYWxzKToKICAgICAgICBpZiBteV9nb2FscyA+IG9wcG9uZW50X2dvYWxzOgogICAgICAgICAgICBzZWxmLnBvaW50cyArPSAzCiAgICAgICAgZWxpZiBteV9nb2FscyA9PSBvcHBvbmVudF9nb2FsczoKICAgICAgICAgICAgc2VsZi5wb2ludHMgKz0gMQogICAgICAgIHNlbGYuZ29hbHNfc2NvcmVkICs9IG15X2dvYWxzCiAgICAgICAgc2VsZi5nb2Fsc19jb25jZWRlZCArPSBvcHBvbmVudF9nb2FscwogICAgICAgIHNlbGYucmVzdWx0c1tvcHBvbmVudC5uYW1lXSA9IChteV9nb2Fscywgb3Bwb25lbnRfZ29hbHMpCgpkZWYgZ2VuZXJhdGVfZml4dHVyZXMocGxheWVycyk6CiAgICBuID0gbGVuKHBsYXllcnMpCiAgICBmaXh0dXJlcyA9IFtdCiAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICBmb3IgaiBpbiByYW5nZShpICsgMSwgbik6CiAgICAgICAgICAgIGZpeHR1cmVzLmFwcGVuZCgocGxheWVyc1tpXSwgcGxheWVyc1tqXSkpCiAgICByYW5kb20uc2h1ZmZsZShmaXh0dXJlcykKICAgIHJldHVybiBmaXh0dXJlcwoKZGVmIGRpc3BsYXlfdGFibGUocGxheWVycyk6CiAgICBwbGF5ZXJzID0gc29ydGVkKHBsYXllcnMsIGtleT1sYW1iZGEgcDogKC1wLnBvaW50cywgLXAuZ29hbF9kaWZmZXJlbmNlKCksIC1wLmdvYWxzX3Njb3JlZCkpCgogICAgZm9yIGkgaW4gcmFuZ2UobGVuKHBsYXllcnMpIC0gMSk6CiAgICAgICAgaWYgcGxheWVyc1tpXS5wb2ludHMgPT0gcGxheWVyc1tpKzFdLnBvaW50czoKICAgICAgICAgICAgcmVzdWx0ID0gcGxheWVyc1tpXS5yZXN1bHRzW3BsYXllcnNbaSsxXS5uYW1lXQogICAgICAgICAgICBpZiByZXN1bHRbMF0gPCByZXN1bHRbMV06CiAgICAgICAgICAgICAgICBwbGF5ZXJzW2ldLCBwbGF5ZXJzW2krMV0gPSBwbGF5ZXJzW2krMV0sIHBsYXllcnNbaV0KICAgICAgICAgICAgZWxpZiByZXN1bHRbMF0gPT0gcmVzdWx0WzFdIGFuZCBwbGF5ZXJzW2ldLmdvYWxfZGlmZmVyZW5jZSgpIDwgcGxheWVyc1tpKzFdLmdvYWxfZGlmZmVyZW5jZSgpOgogICAgICAgICAgICAgICAgcGxheWVyc1tpXSwgcGxheWVyc1tpKzFdID0gcGxheWVyc1tpKzFdLCBwbGF5ZXJzW2ldCiAgICAgICAgICAgIGVsaWYgcmVzdWx0WzBdID09IHJlc3VsdFsxXSBhbmQgcGxheWVyc1tpXS5nb2FsX2RpZmZlcmVuY2UoKSA9PSBwbGF5ZXJzW2krMV0uZ29hbF9kaWZmZXJlbmNlKCk6CiAgICAgICAgICAgICAgICBpZiBwbGF5ZXJzW2ldLmdvYWxzX3Njb3JlZCA8IHBsYXllcnNbaSsxXS5nb2Fsc19zY29yZWQ6CiAgICAgICAgICAgICAgICAgICAgcGxheWVyc1tpXSwgcGxheWVyc1tpKzFdID0gcGxheWVyc1tpKzFdLCBwbGF5ZXJzW2ldCgogICAgcHJpbnQoIlJhbmsgfCBQbGF5ZXIgTmFtZSB8IFBvaW50cyB8IEdvYWwgRGlmZmVyZW5jZSB8IEdvYWxzIFNjb3JlZCIpCiAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpCiAgICBmb3IgcmFuaywgcGxheWVyIGluIGVudW1lcmF0ZShwbGF5ZXJzLCBzdGFydD0xKToKICAgICAgICBwcmludChmIntyYW5rfS4gICB7cGxheWVyLm5hbWV9ICAgICAgICAgIHtwbGF5ZXIucG9pbnRzfSAgICAgICAgICAgIHtwbGF5ZXIuZ29hbF9kaWZmZXJlbmNlKCl9ICAgICAgICAgICAgICAgICAgICAge3BsYXllci5nb2Fsc19zY29yZWR9IikKCmRlZiBtYWluKCk6CiAgICBudW1fcGxheWVycyA9IGludChpbnB1dCgiRW50ZXIgbnVtYmVyIG9mIHBsYXllcnM6ICIpKQogICAgcGxheWVycyA9IFtQbGF5ZXIoaW5wdXQoZiJFbnRlciBuYW1lIGZvciBwbGF5ZXIge2krMX06ICIpKSBmb3IgaSBpbiByYW5nZShudW1fcGxheWVycyldCgogICAgZml4dHVyZXMgPSBnZW5lcmF0ZV9maXh0dXJlcyhwbGF5ZXJzKQoKICAgIGZvciBob21lLCBhd2F5IGluIGZpeHR1cmVzOgogICAgICAgIHByaW50KGYiXG5GaXh0dXJlOiB7aG9tZS5uYW1lfSB2cyB7YXdheS5uYW1lfSIpCiAgICAgICAgaG9tZV9nb2FscyA9IGludChpbnB1dChmIkVudGVyIGdvYWxzIHNjb3JlZCBieSB7aG9tZS5uYW1lfTogIikpCiAgICAgICAgYXdheV9nb2FscyA9IGludChpbnB1dChmIkVudGVyIGdvYWxzIHNjb3JlZCBieSB7YXdheS5uYW1lfTogIikpCgogICAgICAgIGhvbWUuYWRkX3Jlc3VsdChhd2F5LCBob21lX2dvYWxzLCBhd2F5X2dvYWxzKQogICAgICAgIGF3YXkuYWRkX3Jlc3VsdChob21lLCBhd2F5X2dvYWxzLCBob21lX2dvYWxzKQoKICAgIGRpc3BsYXlfdGFibGUocGxheWVycykKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKCk=
import random
class Player:
def __init__(self, name):
self.name = name
self.points = 0
self.goals_scored = 0
self.goals_conceded = 0
self.results = {}
def goal_difference(self):
return self.goals_scored - self.goals_conceded
def add_result(self, opponent, my_goals, opponent_goals):
if my_goals > opponent_goals:
self.points += 3
elif my_goals == opponent_goals:
self.points += 1
self.goals_scored += my_goals
self.goals_conceded += opponent_goals
self.results[opponent.name] = (my_goals, opponent_goals)
def generate_fixtures(players):
n = len(players)
fixtures = []
for i in range(n):
for j in range(i + 1, n):
fixtures.append((players[i], players[j]))
random.shuffle(fixtures)
return fixtures
def display_table(players):
players = sorted(players, key=lambda p: (-p.points, -p.goal_difference(), -p.goals_scored))
for i in range(len(players) - 1):
if players[i].points == players[i+1].points:
result = players[i].results[players[i+1].name]
if result[0] < result[1]:
players[i], players[i+1] = players[i+1], players[i]
elif result[0] == result[1] and players[i].goal_difference() < players[i+1].goal_difference():
players[i], players[i+1] = players[i+1], players[i]
elif result[0] == result[1] and players[i].goal_difference() == players[i+1].goal_difference():
if players[i].goals_scored < players[i+1].goals_scored:
players[i], players[i+1] = players[i+1], players[i]
print("Rank | Player Name | Points | Goal Difference | Goals Scored")
print("-------------------------------------------------------------")
for rank, player in enumerate(players, start=1):
print(f"{rank}. {player.name} {player.points} {player.goal_difference()} {player.goals_scored}")
def main():
num_players = int(input("Enter number of players: "))
players = [Player(input(f"Enter name for player {i+1}: ")) for i in range(num_players)]
fixtures = generate_fixtures(players)
for home, away in fixtures:
print(f"\nFixture: {home.name} vs {away.name}")
home_goals = int(input(f"Enter goals scored by {home.name}: "))
away_goals = int(input(f"Enter goals scored by {away.name}: "))
home.add_result(away, home_goals, away_goals)
away.add_result(home, away_goals, home_goals)
display_table(players)
if __name__ == "__main__":
main()