Проблема с вложенным списком HackerRank: -Проблемы с 2 из 10 тестов - PullRequest
0 голосов
/ 08 декабря 2018

Ниже приведена моя попытка найти решение. Результат нужно упорядочить в лексикографическом порядке, что я и сделал, но я не понимаю, почему не работают тестовые примеры, которые я упомянул ниже после #Code.

# Код

N=int(input("enter number of students in the range of 2 to 5"))
physics_students=[]

#creating a list of student names with their grades
for i in range(N):
    name = input()
    score = float(input())
    physics_students.append([name,score])
physics_students.sort()

#Removing the lowest grade
grades_list=[]
for i in range(N):
    grades_list.append(physics_students[i][1])
grades_list.sort()
grades_list.remove(min(grades_list))

#finding out the names of students with second lowest grade
for i in range(N):
    if physics_students[i][1]==grades_list[0]:
        print("name",physics_students[i][0])

Тестовые примеры, которые не прошли, следующие:

Контрольный пример 1: 4 abhay -50 sri -50 rakesh -50 kishore 51

Контрольный пример 2: 5 баранов 20 рамеш 20 суреш 19 венкат 19 джейдип 21

Ссылка на проблему Хакера Ранка

1 Ответ

0 голосов
/ 08 декабря 2018

Ошибка здесь:

grades_list=[]
for i in range(N):
    grades_list.append(physics_students[i][1])
grades_list.sort()
grades_list.remove(min(grades_list))

Дескриптор проблемы HackerRank
Примечание: Если есть несколько учеников с с одинаковым классом , закажитеих имена в алфавитном порядке и печатать каждое имя в новой строке. Акцент мой

Теперь рассмотрим, было ли несколько учеников с одинаковой низшей оценкой.Скажем, оценки были [1, 1, 2, 3].Это становится вашим отсортированным grades_list.

Теперь, что происходит, когда вы звоните .remove()?

>>> grades_list.remove(min(grades_list))
>>> print(grades_list)
[1, 2, 3]

Итак, вы видите, что min не полностью удален.

Есть несколько способов решить эту проблему, но я хочу оставить реализацию вам, поскольку это довольно хорошее упражнение.

Спойлер:


Прочие вопросы

N=int(input("enter number of students in the range of 2 to 5"))

Там не должно быть подсказки.Это испортит стандартный вывод, и HackerRank пометит его как неправильный.

print("name",physics_students[i][0])

Это также.Вы можете удалить name.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...