Как исправит ошибку в тестах?
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
...