Как исправит ошибку в тестах?

from collections import namedtuple

def quick_sort(array, comparator, low=0, high=len(array)-1):
    if low < high:
        pivot = low
        for student in range(low + 1, high + 1):
            if comparator(array[low], array[student]):
                pivot += 1
                array[student], array[pivot] = array[pivot], array[student]
        array[pivot], array[low] = array[low], array[pivot]
        quick_sort(array, comparator,low, pivot)
        quick_sort(array, comparator, pivot + 1, high)


def comparator(member_first, member_second):
    if member_first.points < member_second.points:
        return True
    elif member_first.points > member_second.points:
        return False
    else:
        if member_first.penalties > member_second.penalties:
            return True
        elif member_first.penalties < member_second.penalties:
            return False
        else:
            if member_first.nickname > member_second.nickname:
                return True
            else:
                return False


if __name__ == '__main__':
    number_of_participants = int(input())
    students = [None] * number_of_participants
    Student = namedtuple('Student', 'nickname points penalties')
    for i in range(number_of_participants):
        try:
            nickname, points, penalties = input().split()
            students[i] = Student(nickname, int(points), int(penalties))
        except ValueError as error:
            raise ValueError(error)
    quick_sort(students, comparator)
    print('\n'.join(student.nickname for student in students))

Когда запуская код, появляется такая ошибка:

Traceback (most recent call last):
  File "be37f05d-7adf-4f41-ad84-6292bf13e722", line 3, in <module>
    def quick_sort(array, comparator, low=0, high=len(array)-1):
NameError: name 'array' is not defined

Помогите пожалуйста её исправит


Ответы (1 шт):

Автор решения: CrazyElf
def quick_sort(array, comparator, low=0, high=len(array)-1):
                                         ^^^^^^^^^^^^^^^^^
    ...

Дефолтные параметры так не описывают. Нельзя описывать одни параметры через другие. Нужно делать через None дефолтные параметры, а конкретно считать их уже в теле функции:

def quick_sort(array, comparator, low=0, high=None):
    if high is None:
        high = len(array)-1
    ...
→ Ссылка