У меня есть следующая строка в моей программе на Python
print "Player 1: " +str(player1points)
, где 'player1points' вычисляется в моей программе.
Результаты дают:
Player 1: 3
где '3' было то, что программа рассчитала для этого прогона.
Однако по одной конкретной функции мне удалось получить помощь здесь
def sort_players(players):
r"""Sort the players by points.
>>> print sort_players('Player 1: 3\n'
... '\n'
... 'Player 2: 4\n'
... '\n'
... 'Player 3: 3\n'
... '\n'
... 'Player 4: 5\n')
Player 4: 5
Player 2: 4
Player 1: 3
Player 3: 3
"""
# split into a list
players = players.split("\n")
# filter out empty lines
players = [player for player in players if player != '']
def points(player_report):
"""Parse the number of points won by a player from a player report.
A "player report" is a string like 'Player 2: 6'.
"""
import re
# Match the last string of digits in the passed report
points = re.search(r'\d+$', player_report).group()
return int(points)
# Pass `points` as a "key function".
# The list will be sorted based on the values it returns.
players.sort(key=points, reverse=True)
# Make the sorted list back into a string.
return "\n".join(players)
Функция будет принимать только ввод:
Player 1: 3
а не:
"Player 1: " +str(player1points)
Даже если мне кажется, что они оба дают одинаковый результат, как я смогу конвертировать
"Player 1: " +str(player1points)
на соответствующий вход, чтобы функция его принимала.
Примеры:
sort_players('Player 1: 3\n'
'\n'
'Player 2: 4\n'
'\n'
'Player 3: 3\n')
даст мне
Player 2: 4
Player 1: 3
Player 3: 3
Пример 2:
sort_payers('Player 1: +str(player1points)\n'
'\n'
'Player 2: +str(player2points)\n'
'\n'
'Player 3: +str(player3points)\n')
даст мне
AttributeError:'NoneType' object has no attribute 'group'