#python
#python
Вопрос:
Привет, пожалуйста, мне нужна помощь в решении проблемы: это мой код :
n=int(input())
W=[]
while(n!=0):
for i in range(n):
W.append(input())
for i in range(0,len(W)-1) :
for j in range(i 1,len(W)):
if W[i][0:2] > W[j][0:2]:
Aide=W[i]
W[i]=W[j]
W[j]=Aide
n=int(input())
for word in W:
print(word)
print('n')
W=[]
он работает для двух входных данных и неправильного ответа после.. Я не знаю, чего не хватает!!!
(проблема: напишите программу, которая сортирует список фамилий учащихся, но при сортировке используются только первые две буквы имени. Ничто другое в имени не используется для сортировки. Однако, если два имени имеют одинаковые первые две буквы, они должны оставаться в том же порядке, что и во входных данных (это известно как «стабильная сортировка»). Сортировка чувствительна к регистру на основе порядка ASCII (с сортировкой прописных букв перед строчными буквами, т.Е..)
Комментарии:
1. насколько ясна постановка задачи, было бы лучше, если бы вы опубликовали образец ввода и вывода, в вашем случае список имен
2. @python_learner Я сделал этот код в компиляторе kattis, и он работает только для первого ввода, после того, как он дает мне неправильный ответ.. Я не знаю, какой ввод выдает ошибку..
3. вы можете вставить любой образец ввода и вывода, поэтому любой, кто просматривает вопрос, может знать, с чем работать
Ответ №1:
Ну, я попытался исправить ваш код, что я сделал, так это изменил вашу сортировку на лямбда-функцию, где она использует функцию .sort() и сортирует с использованием двух первых букв (потому что сортировка строк в python сортирует с использованием значения ASCII каждого символа, поэтому учитывается, что
while (True):
n = int(input())
W = []
if (n == 0):
break
for i in range(n):
W.append(input())
W.sort(key=lambda x:(x[0:2]))
for word in W:
print(word)
print()
Я думаю, вы хотели правильно использовать BubbleSort, я полагаю, ваша реализация неверна, вот почему. это пузырьковая сортировка в этой проблеме
for i in range(len(W) - 1):
for j in range(len(W)-i-1):
if W[j][0:2]> W[j 1][0:2]:
W[j],W[j 1]=W[j 1],W[j]
Комментарии:
1. Я предполагаю, что OP хочет вручную написать алгоритм сортировки, а не использовать ключевой параметр
2. @python_learner я думаю, что они говорят об этой проблеме open.kattis.com/problems/sortofsorting
3. спасибо за лямбда-функцию, она работает .. но я также сравнил только две буквы fisrt `if W [i] [0: 2]> W [j] [0: 2]: `но у меня не получилось .. я не знаю, что не так