Ce sont les listes que j'ai écrites dans mon code: J'essaie de créer une fonction dans laquelle l'utilisateur tape le code d'un livre dans la fonction ci-dessous, puis la fonction Lit des informations relatives à ce code de livre. C'est tout ce que j'ai montré jusqu'à présent: p> par exemple, si l'utilisateur Type "2" dans la fonction, la fonction doit imprimer quelque chose le long des lignes de : p> code: 2 -
Titre: Jeu de trônes -
Catégorie: Fantasy P> P>
4 Réponses :
Mieux vaut stocker des informations dans le dictionnaire que dans le format de liste
au lieu d'utiliser 3 listes, utilisez 1 dictionnaire par code:
Vous pouvez le générer à la main ou utiliser cette ligne: p> et maintenant vous pouvez trouver un livre Par son code à l'aide de ce dictionnaire: p> pour trouver la catégorie d'un livre avec code = 2: p> Pour imprimer des informations dans votre format: p>
Utilisez une DataClass et un dict code>.
from dataclasses import dataclass
@dataclass
class Book:
id: int # Not clear if this is necessary
name: str
category: str
book_codes = [1 , 2 , 3 , 10]
book_names = ["Harry Potter" , "Game of Thrones" , "Star Wars" , "War of the Worlds"]
book_categories = ["Fantasy" , "Fantasy" , "Science-fiction" , "Science-fiction"]
books = {id: Book(id, name, category) for id, name, category in zip(book_codes, book_names, book_categories)}
book_code = int(input("Please enter book code: "))
book = books[book_code]
Je sais que les fonctions de l'ordre supérieur sont fronçées par Guido, mais je ne peux pas m'empêcher de penser que carte code> atténuerait une partie de la redondance de ce code et le rendre plus propre:
livres = {b. ID: B pour B sur la carte (livre, Book_Codes, Book_Names, Book_Categories)} code>.
En supposant que vous aurez un code de livre unique, il peut être résolu en utilisant,
book_codes = [1 , 2 , 3 , 10]
book_names = ["Harry Potter" , "Game of Thrones" , "Star Wars" , "War of the Worlds"]
book_categories = ["Fantasy" , "Fantasy" , "Science-fiction" , "Science-fiction"]
book_code = int(input("Please enter book code: "))
result = list(filter(lambda x : x[0] == book_code ,zip(book_codes,book_names,book_categories)))[0]
print ("Code: {} - Title: {} - Category: {}".format(result[0], result[1], result[2]))
# Output : Code: 2 - Title: Game of Thrones - Category: Fantasy
Avez-vous envisagé d'utiliser
Dictionnaire code> dans Python?
Vous pouvez créer une classe pour grouper des données ensemble. Sinon, utilisez
impression (nommé [Index], book_categories [index]) code>
S'il vous plaît ne créez pas de classe. La suggestion du dictionnaire est une bonne avance.
Il n'y aurait pas nécessairement rien de mal à définir une classe ici (le module
Dataclasses Code> permet de définir une telle classe facile à définir), bien que un
nomméTuple code> pourrait suffire.
Ne pas vandaliser vos messages. En publiant sur ce site, vous avez irrévocablement accordé au réseau de la pile Exchange le droit de distribuer ce contenu sous le CC BY-SA 3.0 License Pour tant que cela voit en forme. Pour les alternatives à Supprimer, voir: J'ai pensé mieux de ma question; Puis-je le supprimer?