/
azazzello85
/
python_learning
Обзор
Документация
Войти
/
azazzello85
/
python_learning
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
DZ_4.py
149 строк
6 KB
azazzello85
full dz
03 фев 2025, 23:02
03 фев 2025, 23:02
bac1206
Код
Авторство
О чём код?
#Задание 1 documents = [ {'type': 'passport', 'number': '2207 876234', 'name': 'Василий Гупкин'}, {'type': 'invoice', 'number': '11-2', 'name': 'Геннадий Покемонов'}, {'type': 'insurance', 'number': '10006', 'name': 'Аристарх Павлов'} ] directories = { '1': ['2207 876234', '11-2'], '2': ['10006'], '3': [] } def main(cmnd): """ Основная функция, запускает другие в зависимости от ввода :return: результат работы других функций в зависимости от выбора пользователя """ match cmnd: case 'p': owner_by_id() case 's': doc_id = input('Введите номер документа:') if strg_by_id(doc_id) is not None: print('Результат:\nДокумент хранится на полке:', strg_by_id(doc_id)) case 'l': print('Результат:') full_base() case 'ads': new_shelf = input('Введите номер полки:') print('Результат:') add_shelf(new_shelf) case 'ds': del_shelf() case 'ad': print('Результат:') add_doc() case 'd': del_doc() case 'm': move_doc() case _: print('Неизвестная команда') #Пункт 1 def owner_by_id(): """ Поиск владельца по номеру документа :return: """ doc_id = input('Введите номер документа:') list_to_check = [doc['number'] for doc in documents] if doc_id in list_to_check: print('Результат:\nВладелец документа:',documents[list_to_check.index(doc_id)]['name']) else: print('Результат:\nДокумент не найден в базе') #Пункт 2 def strg_by_id(doc_id): """ Поиск полки хранения по номеру документа :return: """ for dir_num, dir_cntnt in directories.items(): if doc_id in dir_cntnt: return dir_num else: print('Результат:\nДокумент не найден в базе') #Пункт 3 def full_base(): for doc in documents: print(f'№: {doc['number']}, тип: {doc['type']}, владелец: {doc['name']}, полка хранения: {strg_by_id(doc['number'])}') #Пункт 4 def add_shelf(new_shelf): if new_shelf in directories.keys(): print (f'Такая полка уже существует. Текущий перечень полок: {', '.join([dir for dir in directories.keys()])}.') else: directories.setdefault(new_shelf,[]) print (f'Полка добавлена. Текущий перечень полок: {', '.join([dir for dir in directories.keys()])}.') #Пункт 5 def del_shelf(): shelf_to_del = input('Введите номер полки:') print('Результат:') if shelf_to_del in [shelf for shelf in directories.keys()]: if len(directories[shelf_to_del]) == 0: del directories[shelf_to_del] print (f'Полка удалена. Текущий перечень полок: {', '.join([dir for dir in directories.keys()])}.') else: print (f'На полке есть документы, удалите их перед удалением полки. Текущий перечень полок: ' f'{', '.join([dir for dir in directories.keys()])}.') else: print (f'Такой полки не существует. Текущий перечень полок: {', '.join([dir for dir in directories.keys()])}.') #Задание 2 #Пункт 1 def add_doc(): doc_id = input('Введите номер документа:') doc_type = input('Введите тип документа:') doc_owner = input('Введите владельца документа:') doc_shelf = input('Введите полку для хранения:') if doc_shelf in [shelf for shelf in directories.keys()]: documents.append({'type' : doc_type, 'number' : doc_id, 'name' : doc_owner}) directories[doc_shelf].append(doc_id) print ('Документ добавлен. Текущий список документов:') full_base() else: print ('Такой полки не существует. Добавьте полку командой as.\nТекущий список документов:') full_base() #Пункт 2 def del_doc(): doc_id = input('Введите номер документа:') if doc_id in [doc['number'] for doc in documents]: id_to_del = [doc['number'] for doc in documents].index(doc_id) del documents[id_to_del] print('Документ удален.\nТекущий список документов:') full_base() else: print('Документ не найден в базе.\nТекущий список документов:') full_base() #Пункт 3 def move_doc(): doc_id = input('Введите номер документа:') new_shelf = input('Введите номер полки:') if doc_id in [doc['number'] for doc in documents]: if new_shelf in directories.keys(): for dir_num, dir_cntnt in directories.items(): if doc_id in dir_cntnt: del dir_cntnt[dir_cntnt.index(doc_id)] directories[dir_num] = dir_cntnt directories[new_shelf].append(doc_id) print('Документ перемещен.\nТекущий список документов:') full_base() else: print (f'Такой полки не существует. Текущий перечень полок: {', '.join([dir for dir in directories.keys()])}.') else: print('Документ не найден в базе.\nТекущий список документов:') full_base() cmnd = input('Введите команду:') while cmnd != 'q': main(cmnd) cmnd = input('Введите команду:') print ('Вы завершили работу')