Как проверить, существует ли введенная книга?

Как проверить, существует ли введенная книга? Пример:

 libros = {
        "Principito" : ["Titulo: Principito","Genero: Fantasia", "paginas: 20", "Autor: Raul", "Numero ISBN: 12312123", "Año de edicion: 1994", "Editorial: IZI"],
         "El padrino" : ["Titulo: El padrino","Genero:Ficcion", "paginas: 30", "Autor: Lopez", "Numero ISBN: 22312312", "Año de edicion: 1992", "Editorial: PIZI"]
}

Я остаюсь таким, но знаю, что это неправильно. Ошибка, которую я знаю, заключается в том, если, но как мне это выразить?

 #Funcion para consultar por un libro.
 def consultar():
      print("Por cual libro desea consultar?")
      s=input()
      if (libros[s] == libros):
            print("Tenemos ese libro en la Biblioteca")
      else:
            print("No tenemos ese libro en la Biblioteca")
0
задан 05.11.2016, 04:38
3 ответа

Есть более оптимальный способ это реализовывать:

libros = {
    "Principito" : ["Titulo: Principito","Genero: Fantasia", "paginas: 20", "Autor: Raul", "Numero ISBN: 12312123", "Año de edicion: 1994", "Editorial: IZI"],
     "El padrino" : ["Titulo: El padrino","Genero:Ficcion", "paginas: 30", "Autor: Lopez", "Numero ISBN: 22312312", "Año de edicion: 1992", "Editorial: PIZI"]
}

Ты представляешь, что раз неудара в лунку (), у нас есть параметр ввода "text", чтобы мочь концентрироваться на for.

def consultar1(text="El padrino"):
    existe = 0 
    for libro in libros:
        if text == libro:
            existe = 1
    if (existe == 1):
        return True
    else:
        return False

Он был бы приспособлен эту к предыдущему ответу.

def consultar2(text="El padrino"):
    if text in libros:
        return True
    else:
        return False

С этим мы пробегаем все ключи только до тех пор, пока не будет матча, в случае, если есть.

Ты можешь видеть, как он гораздо быстрее, и против большого будьте ты книги различие будет больше.

%timeit -n1000 consultar1(): 1000 loops, best of 3: 623 ns per loop
%timeit -n1000 consultar2(): 1000 loops, best of 3: 302 ns per loop

Половина времени только с двумя поступающими данными.

1
ответ дан 24.11.2019, 12:44

Согласно которому я понимаю, ты хочешь, чтобы пользователь ввел имя книги в компьютер, и этот это ищет в “базе данных”, которая была бы договоренностью. Если это будет так, пример, который оставил тебя, подаст тебя:

# -*- coding: utf-8 -*-
#AGREGA TU ARREGLO <-----
#Funcion para consultar por un libro.
def consultar():
      print("Por cual libro desea consultar?")
      s=raw_input()
      existe = 0 
      for libro in libros:
          if s == libro:
              existe = 1

      if (existe == 1):
            print("Tenemos ese libro en la Biblioteca")
      else:
            print("No tenemos ese libro en la Biblioteca")

consultar()
0
ответ дан 24.11.2019, 12:44
  • 1
    Большое спасибо! – P. Matias 05.11.2016, 08:19
  • 2
    Не за что. Ты мог бы отмечать мой ответ знаками, я подался бы, чтобы зарабатывать точки, спасибо. – Patricio Nicolas 06.11.2016, 23:09

Г‰sta мне кажется решение mГЎs просто используя код автора, но "pythonizado":

def consultar():
    print("Por cual libro desea consultar?")
    consulta = input()

    if consulta in libros:
        print("Tenemos ese libro en la Biblioteca")
    else:
        print("No tenemos ese libro en la Biblioteca")
0
ответ дан 24.11.2019, 12:44