Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Яндекс практикум, Python

эрик долгополов Ученик (201), на голосовании 1 год назад
Помогите решить данную задачу, сколько не пытался - не выходит
Голосование за лучший ответ
Arkadiy Smirnov Профи (704) 1 год назад
id_string = input("Введите список ID, разделенных пробелами: ")
id_list = id_string.split() # разбиваем строку на список ID
id_set = set(id_list) # удаляем дубликаты, превращая список в множество
if len(id_list) != len(id_set): # проверяем наличие дубликатов
print("Найден дубликат ID")
id_list = sorted(id_set, key=int) # сортируем список ID по возрастанию
print("Список ID без дубликатов, отсортированный по возрастанию: ", " ".join(id_list))
эрик долгополовУченик (201) 1 год назад
Благодарю! Единственный момент - по условию необходимо возвращать дублирующиеся ID, вот как раз с этим проблема (пробывал через цикл - но результат дробит на элементы (10 превращайся в 1, 0). Как можно реализовать вышеуказанное с учетом возврата дубликата ID («найден дубликат ID “10”). Заранее благодарю ?
Молот Шотландцев Высший разум (301972) 1 год назад
split(' ') - разбиение строки на массив по пробелам
set(id_string) - создание множества, то есть удаление дубликатов
id_string.sort() - сортировка
"Найден дубликат" - если длина исходного списка не равна длине сета
эрик долгополовУченик (201) 1 год назад
Благодарю! Единственный момент - по условию необходимо возвращать дублирующиеся ID, вот как раз с этим проблема (пробывал через цикл - но результат дробит на элементы (10 превращайся в 1, 0). Как можно реализовать вышеуказанное с учетом возврата дубликата ID («найден дубликат ID “10”). Заранее благодарю
Кирилл ВласовУченик (244) 1 год назад
'set' object has no attribute 'sort'
Виктория Бухун Ученик (103) 5 месяцев назад
Как-то так может, если не использовать встроенную сортировку. Со встроенной по идее будет быстрее работать, но для собесов например, лучше уметь самому сортировать.

 idx = "32 48 2 6 14 58 2 88 9 14 123 48 3 17 42 42 7" 

idx_ls = list(map(int, list(idx.split())))


def removing_duplicates(numbers: list[int]) -> list[int]:
unique_numbers = set()
for i in range(len(numbers) - 1):
if numbers[i] not in unique_numbers:
unique_numbers.add(numbers[i])
else:
print(f"Найден дубликат ID {numbers[i]}")
return list(unique_numbers)


def bubble_sort(numbers: list[int]) -> list[int]:
flag = True
while flag:
flag = False
for i in range(len(numbers) - 1):
if numbers[i] > numbers[i+1]:
numbers[i], numbers[i+1] = numbers[i+1], numbers[i]
flag = True

return numbers


def get_ls(numbers: list[int]) -> list[int] | None:
if not numbers:
return
if len(numbers) == 1:
return numbers

numbers = removing_duplicates(numbers)
numbers = bubble_sort(numbers)
return numbers


print(get_ls(idx_ls))
Похожие вопросы