🎉 ¡Felicidades! 🎉
¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.
ProgerLib Python para todos
Trabajas como especialista junior en el archivo digital. Tu tarea & mdash; Crear un programa asistente para la catalogación de artefactos antiguos. Cada artefacto tiene un identificador numérico único (ID) y un nombre.
El programa debe ser interactivo y funcionar en un ciclo, esperando comandos de tu parte.
Comandos del programa:
add — Desencadena el proceso de agregar un nuevo artefacto. El programa te solicitará datos en el formato "id: nombre". Debes asegurarte de que el ID sea un número entero. Si el formato de entrada es incorrecto (por ejemplo, no hay dos puntos o el ID no es un número), el programa debe informar un error y solicitar la entrada nuevamente hasta que se ingresen los datos correctos. list — Muestra en pantalla la lista actual de todos los artefactos agregados en el orden en que fueron añadidos. sort — Realiza la ordenación de todos los artefactos por orden ascendente de su ID. Para la ordenación, es necesario utilizar el algoritmo de ordenamiento de burbuja . Después de la ordenación, el programa debe informar del éxito. exit — Finaliza la ejecución del programa. Tu objetivo — Escribir un programa que procese correctamente todos los comandos, gestione la lista de artefactos e implemente correctamente el ordenamiento de burbuja para que el archivero senior pueda navegar fácilmente por el catálogo.
El comando del usuario (línea). Puede ser uno de: add, list, sort, output.
Si el comando es add, entonces la entrada de datos sobre el artefacto (línea) en el formato id: name. El ID debe representarse en forma de un número entero.
Las respuestas del programa a los comandos, mensajes de error, una lista ordenada o incompleta de artefactos (líneas).
Añadir
30: Escudo
Añadir
10: Espada
Ordenar
Lista
Salir
El artefacto se ha añadido correctamente.
El artefacto se ha añadido correctamente.
El archivo se ha ordenado correctamente por ID.
--- Catálogo de artefactos ---
id: 10, nombre: espada
id: 30, nombre
-------------------- Programas. ¡Adiós!
# Создаем два пустых списка для хранения 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("Неизвестная команда. Пожалуйста, используйте одну из следующих: добавить, список, сортировать, выход.")
🎉 ¡Felicidades! 🎉
¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.
AD
Publicidad
Ejecutando tu código...