Поиск инвентаря и отображение информации - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь написать код, который ищет список объектов данных, если пользователь не вводит ссылочный номер, он должен напечатать «такой элемент не найден», когда пользователь вводит действительный ссылочный номер, он должен отображать информациюоб этом предмете.Теперь мой код печатает, что такой элемент не найден для каждого объекта данных, а не один раз.Как я могу сделать это только один раз?

def initialize():
    medialist=[
    MediaItem("TU2RL012","Movie","2001: A Space Odyssey",11.99, None ,"Stanley Kubrick","Keir Dullea"),
    MediaItem("GV5N32M9","Book","A Brief History of Time",10.17,"Stephen Hawking", None, None),
    MediaItem("1DB6HK3L","Movie","North by Northwest",8.99, None, "Alfred Hitchcock","Cary Grant"),
    MediaItem("PO5T7Y89","Movie", "The Good, The Bad, The Ugly",9.99,None,"Sergio Leone", "Clint Eastwood"),
    MediaItem("TR3FL0EW","Book","The Alchemist",6.99,"Paulo Coelho", None,None),
    MediaItem("F2O9PIE9", "Book", "Thus Spoke Zarathustra",7.81, "Friedrich Nietzsche", None, None),
    MediaItem("R399CED1","Book", "Jonathan Living Seagull",6.97,"Richard Bach", None, None),
    MediaItem("2FG6B2N9","Movie", "Gone with the Wind",4.99, "Victor Fleming","Vivien Leigh", None),
    MediaItem("6Y9OPL87","Book", "Gone with the Wind",7.99, "Margarett Mitchell", None, None)]
    return medialist

def search_item():
    referencenum=input("Enter item reference:")
    for obj in initialize():
        if referencenum != obj.reference:
            print("No Such Object found")`

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы можете сначала собрать все ссылочные номера объектов в списке

obj_references = [obj.reference for obj in initialize()]

, а затем проверить соответствие:

def search_item():
    referencenum=input("Enter item reference:")
    obj_references = [obj.reference for obj in initialize()]
    if referencenum not in obj_references:
        print("No Such Object found")

Чтобы отобразить дополнительную информацию об объекте, который вы могли бы сначала собратьвсе объекты

objects = initialize()

Затем отдельно соберите необходимую информацию о каждом объекте

obj_references = [obj.reference for obj in objects]
obj_titles = [obj.title for obj in objects]
obj_ratings = [obj.rating for obj in objects]
obj_authors = [obj.author for obj in objects]

Обратите внимание, что obj.title, obj.rating и obj.author являются примерамикак извлечь свойства объекта.Я не знаю точных имен свойств, поэтому вам нужно заменить title , rating и author на правильные имена.

Затем проверьте введенный пользователем ссылочный номер и, в случае совпадения, напечатайте информацию

if referencenum not in obj_references:
    print("No Such Object found")
else:
    obj_id = obj_references.index(referencenum)
    print("Title:", obj_titles[obj_id], "Rating:", obj_ratings[obj_id],               
          "Author:", obj_authors[obj_id])

obj_id = obj_references.index(referencenum) возвращает индекс введенного ссылочного номера и, используя этот индекс, вы можете извлечь заголовок, рейтинги автора из их соответствующих списков (например, obj_titles[obj_id]).

Полная функция будет выглядеть так:

def search_item():
    referencenum = input("Enter item reference:")

    objects = initialize()
    obj_references = [obj.reference for obj in objects]
    obj_titles = [obj.title for obj in objects]
    obj_ratings = [obj.rating for obj in objects]
    obj_authors = [obj.author for obj in objects]

    if referencenum not in obj_references:
        print("No Such Object found")
    else:
        obj_id = obj_references.index(referencenum)
        print("Title:", obj_titles[obj_id], "Rating:", obj_ratings[obj_id],               
              "Author:", obj_authors[obj_id])
0 голосов
/ 01 марта 2019

Вы можете использовать понимание списка и использовать not in вместо выполнения цикла for для всех объектов по отдельности.

def search_item():
    reference_num = input("Enter item reference:")
    if reference_num not in [obj.reference for obj in initialize()]:
        print('No such object found')   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...