Python не возвращает ничего вместо строки - PullRequest
0 голосов
/ 17 марта 2019

Это мой код для справки

def tally(tournament_results):

    results = tournament_results.split("\n")

    if results != ['']:
        for i in results:
            entry = i.split(";")
            if entry[0] not in teams:
                create_team(entry[0])

            if entry[1] not in teams:
                create_team(entry[1])

            if entry[2].strip() == "win":
                result(entry[0], entry[1], 'decision')
            elif entry[2].strip() == "loss":
                result(entry[1], entry[0], 'decision')
            elif entry[2].strip() == "draw":
                result(entry[0], entry[1], 'draw')

    output_file()


def output_file():
    global teams
    sorted_x = sorted(teams.items(), key=lambda teams: teams[1][4], reverse=True)
    result = template.format("Team", "MP", "W", "D", "L", "P")
    for entry in sorted_x:
        result = result + "\n" + (template.format(entry[0], entry[1][0], entry[1][1], entry[1][2], entry[1][3], entry[1][4]))

    teams = {}

    print(result)
    return result

if __name__ == '__main__':
    print(tally('Allegoric Alaskans;Blithering Badgers;win\n'
                   'Devastating Donkeys;Courageous Californians;draw\n'
                   'Devastating Donkeys;Allegoric Alaskans;win\n'
                   'Courageous Californians;Blithering Badgers;loss\n'
                   'Blithering Badgers;Devastating Donkeys;loss\n'
                   'Allegoric Alaskans;Courageous Californians;win'))

Оператор print точно печатает ожидаемый результат:

Team                           | MP |  W |  D |  L |  P 
Devastating Donkeys            |  3 |  2 |  1 |  0 |  7 
Allegoric Alaskans             |  3 |  2 |  0 |  1 |  6 
Blithering Badgers             |  3 |  1 |  0 |  2 |  3 
Courageous Californians        |  3 |  0 |  1 |  2 |  1 

Однако мое возвращаемое значение для той же переменной равно None.Я не совсем понимаю, почему.

Любая помощь будет оценена

Ответы [ 2 ]

3 голосов
/ 17 марта 2019

Добавить оператор return в tally: изменить output_file() на return output_file()

2 голосов
/ 17 марта 2019

Вы никогда не печатаете результат output_file().Вы печатаете результат tally(), но он ничего не возвращает.Если вы хотите, чтобы результат печати output_file(), измените:

output_file()

на:

return output_file()
...