🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Вы работаете младшим специалистом в цифровом архиве. Ваша задача — создать программу-помощник для каталогизации древних артефактов. Каждый артефакт имеет уникальный числовой идентификатор (ID) и название.
Программа должна быть интерактивной и работать в цикле, ожидая от вас команд.
Команды программы:
добавить — запускает процесс добавления нового артефакта. Программа запросит у вас данные в формате "ID:Название". Вы должны убедиться, что ID является целым числом. Если формат ввода некорректен (например, отсутствует двоеточие или ID не является числом), программа должна сообщить об ошибке и запросить ввод снова, пока не будут введены корректные данные.список — выводит на экран текущий список всех добавленных артефактов в том порядке, в котором они были добавлены.сортировать — выполняет сортировку всех артефактов по возрастанию их ID. Для сортировки необходимо использовать алгоритм пузырьковой сортировки. После выполнения сортировки программа должна сообщить об успехе.выход — завершает работу программы.Ваша цель — написать программу, которая корректно обрабатывает все команды, управляет списком артефактов и правильно реализует пузырьковую сортировку, чтобы старший архивариус мог легко ориентироваться в каталоге.
Команда пользователя (строка). Может быть одной из: добавить, список, сортировать, выход.
Если команда добавить, то далее следует ввод данных об артефакте (строка) в формате ID:Название. ID должен быть представим в виде целого числа.
Ответы программы на команды, сообщения об ошибках, отсортированный или неотсортированный список артефактов (строки).
добавить
30:Щит
добавить
10:Меч
сортировать
список
выход
Артефакт успешно добавлен.
Артефакт успешно добавлен.
Архив успешно отсортирован по ID.
--- Каталог артефактов ---
ID: 10, Название: Меч
ID: 30, Название: Щит
--------------------------
Завершение работы программы. До свидания!
# Создаем два пустых списка для хранения ID и названий артефактов.
# Мы используем два списка, чтобы ID и названия с одинаковыми индексами соответствовали друг другу.
artifact_ids = []
artifact_names = []
# Запускаем бесконечный цикл, который будет работать, пока пользователь не введет команду "выход".
while True:
# Запрашиваем у пользователя ввод команды.
command = input()
# Условие для обработки команды "добавить".
if command == "добавить":
# Внутренний цикл для проверки корректности ввода данных об артефакте.
while True:
# Запрашиваем данные в формате "ID:Название".
data_input = input()
# Проверяем, есть ли в строке разделитель ':'.
if ':' in data_input:
# Разделяем строку на две части по первому вхождению ':'.
parts = data_input.split(':', 1)
id_str = parts[0]
name_str = parts[1]
# Проверяем, состоит ли часть с ID только из цифр (и возможно знака минус).
if id_str.strip().isdigit():
# Если все проверки пройдены, преобразуем ID в целое число.
new_id = int(id_str)
# Добавляем ID и название в соответствующие списки.
artifact_ids.append(new_id)
artifact_names.append(name_str)
print("Артефакт успешно добавлен.")
# Прерываем внутренний цикл проверки, так как данные корректны.
break
else:
# Сообщение об ошибке, если ID не является числом.
print("Ошибка: ID должен быть целым числом. Попробуйте снова.")
else:
# Сообщение об ошибке, если формат ввода неверный.
print("Ошибка: неверный формат. Используйте ID:Название. Попробуйте снова.")
# Условие для обработки команды "список".
elif command == "список":
print("--- Каталог артефактов ---")
# Проверяем, есть ли артефакты в каталоге.
if not artifact_ids:
print("Архив пуст.")
else:
# Используем цикл for для перебора всех артефактов и их вывода.
# range(len(artifact_ids)) генерирует последовательность индексов от 0 до N-1.
for i in range(len(artifact_ids)):
print(f"ID: {artifact_ids[i]}, Название: {artifact_names[i]}")
print("--------------------------")
# Условие для обработки команды "сортировать".
elif command == "сортировать":
# Получаем количество элементов для сортировки.
n = len(artifact_ids)
# Внешний цикл пузырьковой сортировки.
for i in range(n):
# Внутренний цикл, который сравнивает и меняет местами соседние элементы.
# С каждым проходом внешнего цикла самый большой элемент "всплывает" в конец,
# поэтому внутренний цикл можно сокращать на 'i'.
for j in range(0, n-i-1):
# Если текущий ID больше следующего, меняем их местами.
if artifact_ids[j] > artifact_ids[j+1]:
# Меняем местами ID.
artifact_ids[j], artifact_ids[j+1] = artifact_ids[j+1], artifact_ids[j]
# ВАЖНО: одновременно меняем местами и названия, чтобы сохранить соответствие.
artifact_names[j], artifact_names[j+1] = artifact_names[j+1], artifact_names[j]
print("Архив успешно отсортирован по ID.")
# Условие для обработки команды "выход".
elif command == "выход":
print("Завершение работы программы. До свидания!")
# Прерываем главный цикл while, что приводит к завершению программы.
break
# Если введена неизвестная команда.
else:
print("Неизвестная команда. Пожалуйста, используйте одну из следующих: добавить, список, сортировать, выход.")
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...