Функции

Tita

Новичок
Пользователь
Авг 2, 2020
5
1
3
Дорогие друзья, помогите доработать
- проблема с s :
Введите пользовательскую команду или q для выхода:s
Введите номер документа: 10006
Ой! Такого документа нет.

документ 10006 у нас есть тут наверное нужно ввести вспомогательную переменную, которая изначально будет False и будет обращаться в True только если совпадение найдено. Потом выводить предупреждение, только если содержимое переменной False, но у меня не хватает знаний.
- аналогичная штука с p:

Задача:

Вы работаете секретарем и вам постоянно приходят различные документы. Вы должны быть очень внимательны, чтобы не потерять ни один документ. Каталог документов хранится в следующем виде:
In [2]:
documents = [
{'type': 'passport', 'number': 's', 'name': 'Василий Гупкин'},
{'type': 'invoice', 'number': '11-2', 'name': 'Геннадий Покемонов'},
{'type': 'insurance', 'number': '10006', 'name': 'Аристарх Павлов'}
]
directories = {
'1': ['2207 876234', '11-2'],
'2': ['10006'],
'3': []
}
def main_def():
"""
p или people – команда, которая спросит номер документа и выведет имя человека, которому он принадлежит;
s или shelf – команда, которая спросит номер документа и выведет номер полки, на которой он находится;
l или list – команда, которая выведет список всех документов в формате: passport "2207 876234" "Василий Гупкин"
as или add shelf – команда, которая спросит номер новой полки и добавит ее в перечень;
d или delete – команда, которая спросит номер документа и удалит его из каталога и из перечня полок;
m или move – команда, которая спросит номер документа и целевую полку и переместит его с текущей полки на целевую;
a или add – команда, которая добавит новый документ в каталог и в перечень полок, спросив его номер, тип, имя владельца и номер полки, на котором он будет храниться.
q или quit - для выхода
"""
while True:
user_input = input('Введите пользовательскую команду или q для выхода:')
if user_input == 'p' or user_input == 'people':
people()
elif user_input == 's' or user_input == 'shelf':
shelf()
elif user_input == 'l' or user_input == 'list':
list_()
elif user_input == 'as' or user_input == 'add shelf':
add_shelf()
elif user_input == 'd' or user_input == 'delete':
delete()
elif user_input == 'm' or user_input == 'move':
move()
elif user_input == 'a' or user_input == 'add':
add()
elif user_input == 'q' or user_input == 'quit':
break
else:
print('Ошибка! Была введена неизвестная буква / слово.')


def people():
doc_number = input('Введите номер документа: ')
for document in documents:
if document['number'] == doc_number:
print('ФИО: ', document['name'])
else:
print('Такой документ отсутствует в нашей базе.')
break

def list_():
for document in documents:
print('Тип документа: ', document['type'], 'Номер: ', document['number'], 'ФИО: ', document['name'])

def shelf():
user_doc_number = input('Введите номер документа: ')
for shelf_number, numbers in directories.items():
if user_doc_number in numbers:
print('Номер полки хранения документа: ', shelf_number)
break
else:
print('Ой! Такого документа нет.')
break

def add_shelf():
new_shelf = input('Введите номер новой полки: ')
directories.setdefault(new_shelf, [])

def add():
type_ = input('Введите тип документа: ')
doc_number = input('Введите номер документа: ')
owner = input('Введите имя владельца: ')
doc_shelf = input('Введите номер полки документа: ')
new_document = {'type':type_, 'number': doc_number, 'name': owner}
documents.append(new_document)
if doc_shelf not in directories:
directories.setdefault(doc_shelf, [])
directories[doc_shelf].append(doc_number)

def move():
user_number = input('Введите номер документа: ')
goal_directory = input('Введите номер полки куда переместить документ: ')
for directory, numbers in directories.items():
if user_number in numbers:
numbers.remove(user_number)
directories[goal_directory].append(user_number)
else:
print('Вы ввели несуществующую полку! Проверьте правильность вводимой полки.')
break

def delete():
user_number = input('Введите номер документа: ')
for directory, numbers in directories.items():
if user_number in numbers:
numbers.remove(user_number)
for document in documents:
if document['number'] == user_number:
documents.remove(document)

main_def()
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте через кнопку ... -> код -> python.
Вот тут есть решение вашей задачи: ссылка.
 

Tita

Новичок
Пользователь
Авг 2, 2020
5
1
3
Огромное спасибо, очень помогли
 

Форум IT Специалистов