есть задание, есть код, но код слетает, не всегда работает

МИхаил12

Новичок
Пользователь
Янв 24, 2021
8
0
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 find_owner(number):
    res = 'Документ не найден в базе'
    for i in documents:
        if i['number'] == number:
            res = 'Владелец документа: ' + i['name']
    return(res)

find_owner(documents)

# Задание 2
# Пользователь по команде “s” может по номеру документа узнать на какой полке он хранится


def shelf(number):
    res = 'Документ не найден в базе'
    for i in directories:
        if number in directories[i]:
             res = 'Документ хранится на полке:' + i
    return res

shelf(directories)

# #задание 3 введите команду L

def info(documents, directories):
    for shelf, cont in directories.items():
        for doc in documents:
            if doc['number'] in cont:
                print(f"№: {doc['number']}, тип: {doc['type']}, владелец: {doc['name']}, полка хранения: {shelf}")


info(documents,directories)

#4 задание

def add_shelf(number):
    if number in directories:
        return 'Такая полка уже существует. Текущий перечень полок:' + ','.join(directories.keys())
    directories[number] = []
    return 'Полка добавлена. Текущий перечень полок:' + ','.join(directories.keys())




add_shelf(directories)

# задание 5 Пользователь по команде “ds” может удалить существующую полку из данных (только если она пустая)
def rem_shelf(number):
    if number in directories:
        if len(directories[number]) > 0:
            return 'На полке есть документа, удалите их перед удалением полки. Текущий перечень полок: ' + ', '.join(directories.keys())
        del directories[number]
        print('Полка удалена. Текущий перечень полок: ' + ', '.join(directories.keys()))
    print ('Такой полки не существует. Текущий перечень полок:' + ', '.join(directories.keys()))
 
    
    
    
    
rem_shelf(directories)

def main(documents, directories):
    while True:
        user_input = input('Введите команду')
        if user_input == 'p':
            number = input("Введите номер документа: ")
            print(find_owner(number))
        elif user_input == 's':
            number = input("Введите номер документа: ")
            print(shelf(number))
        elif user_input == 'l':
            print(info(documents, directories))
        elif  user_input == 'as':
            number = input("Введите номер полки: ")
            print(add_shelf(number))
        elif user_input == 'ds':
            number = input("Введите номер полки: ")
            print(rem_shelf(number))
        elif user_input == 'q':
            break

            
main(documents, directories)
есть задание, есть коды решение. Коды слетают, иногда работают, иногда нет, как сказал препод, все почти правильно , но есть недочеты. Не могу найти эти недочеты, кто посмотрит?
 

Вложения

  • задание.txt
    4,5 КБ · Просмотры: 4

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 566
454
83
что это значит, не понятно...

а че не спросить у препода? про какие неточности он говорит? или вы некоммуникабельный человек?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 566
454
83
это сайт и форум для обмена инфо или помощи? нет желания, не помогай, а отчитываться я не обязан
как скажешь
 
-1

МИхаил12

Новичок
Пользователь
Янв 24, 2021
8
0
1
это сайт и форум для обмена инфо или помощи? нет желания, не помогай, а отчитываться я не обязан
 

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