🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
ProgerLib Python für alle
Sie arbeiten als junger Spezialist im digitalen Archiv. Ihre Aufgabe — Erstellen Sie ein Assistentenprogramm für die Katalogisierung antiker Artefakte. Jedes Artefakt hat eine eindeutige numerische Kennung (ID) und einen Namen.
Das Programm sollte interaktiv sein und in einer Schleife arbeiten, wobei es auf Ihre Befehle wartet.
Programm-Befehle:
add — löst den Prozess des Hinzufügens eines neuen Artefakts aus. Das Programm fordert Sie zur Eingabe von Daten im Format "ID: Name" auf. Sie müssen sicherstellen, dass die ID eine ganze Zahl ist. Wenn das Eingabeformat falsch ist (z. B. fehlt der Doppelpunkt oder die ID ist keine Zahl), muss das Programm einen Fehler melden und die Eingabe erneut anfordern, bis die korrekten Daten eingegeben werden. list — Zeigt auf dem Bildschirm die aktuelle Liste aller hinzugefügten Artefakte in der Reihenfolge an, in der sie hinzugefügt wurden. sort — Führt die Sortierung aller Artefakte nach aufsteigender ID durch. Für die Sortierung muss der Bubble-Sort-Algorithmus verwendet werden. Nach der Sortierung soll das Programm über den Erfolg informieren. exit — Beendet die Arbeit des Programms. Ihr Ziel — Schreiben Sie ein Programm, das alle Befehle korrekt verarbeitet, die Liste der Artefakte verwaltet und Bubble-Sort korrekt implementiert, damit der leitende Archivar problemlos im Katalog navigieren kann.
Der Benutzer gibt einen Befehl (Zeile) ein. Es kann einer der folgenden sein: add, list, sort, output.
Wenn der Befehl add lautet, dann erfolgt die Eingabe von Daten über ein Artefakt (Zeile) im Format id: name. Die ID muss als ganze Zahl angegeben werden.
Die Antworten des Programms auf die Befehle, Fehlermeldungen, eine sortierte oder unvollständige Liste von Artefakten (Zeilen).
Hinzufügen
30: Schild
Hinzufügen
10: Schwert
Sortieren
Liste
Beenden
Das Artefakt wurde erfolgreich hinzugefügt.
Das Artefakt wurde erfolgreich hinzugefügt.
Das Archiv wurde erfolgreich nach ID sortiert.
--- Katalog der Artefakte ---
id: 10, name: Schwert
id: 30, name
-------------------- Programme. Auf Wiedersehen!
# Создаем два пустых списка для хранения 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("Неизвестная команда. Пожалуйста, используйте одну из следующих: добавить, список, сортировать, выход.")
🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
AD
Werbung
Führe deinen Code aus...