Poo pokemons qui sert de base à pokedex.py.
import sqlite3 class Pokemon : def __init__(self, reponse): """ reponse est de la forme : (id, nom, name, pv, attaque, defense, attaque_spe, def_spe, vitesse, id_evo_de, description) """ self.id=reponse[0] self.name=reponse[1] self.nom=reponse[2] self.pv=reponse[3] self.attaque=reponse[4] self.defense=reponse[5] self.attaque_speciale=reponse[6] self.defense_speciale=reponse[7] self.vitesse=reponse[8] self.description=reponse[10] self.trouve_evolution_de(reponse[9]) def trouve_evolution_de(self, numero_pokemon_evolution_de): if numero_pokemon_evolution_de!=None: # a completer pour obtenir le nom du Pokémon dont il est l'évolution self.evolution_de="" else: self.evolution_de="---" # ########################################### # Base données # # ########################################### # Création de la connexion def creer_connection(db_fichier): """ Crée une connection à une base de données spécifiée dans l'argument db_fichier :param db_fichier: chemin du fichier de la base de données sous la forme d'une chaine de caractères :return: objet de connection or None """ connexion = None try: connexion = sqlite3.connect(db_fichier) return connexion except Error as e: print(e) return None def obtenir_une_reponse(requete): """ Renvoie la première réponse à la requête. """ bdd = creer_connection("pokemon.db") curseur = bdd.cursor() curseur.execute(requete) reponse=curseur.fetchone() curseur.close() bdd.close() return reponse def obtenir_toutes_les_reponses(requete): """ Renvoie la liste des réponses à la requête. """ bdd = creer_connection("pokemon.db") curseur = bdd.cursor() curseur.execute(requete) reponse=curseur.fetchall() curseur.close() bdd.close() return reponse ###################### # Partie à remplir # ###################### # fonction de recherche du nombre de Pokemons dans le pokedex def nombre_pokemons(): """ renvoie le nombre de pokemons presents dans le pokedex return: int exemple: nombre_pokemons=893 """ requete = "Select Count (*) FROM pokemon;" # <--------- écrire la requête reponse = obtenir_une_reponse(requete) rep = reponse[0] rep = 893 # <-------------- à enlever return rep # fonction de recherche de la liste des pokemons disponibles def recherche_pokemons(): ''' renvoie la liste des noms de pokemons de la base rangé par ordre alphabetique arguments: aucun return: list exemple return = ['Abo', 'Abra', 'Absol', 'Aflamanoir'......] ''' liste=[] requete = "Select nom from pokemon where nom !='NULL' order by nom; " reponses = obtenir_toutes_les_reponses(requete) for rep in reponses : liste.append(rep[0]) return liste # fonction de recherche des attributs d'un pokemon def recherche_attributs_pokemon(nom_pokemon): """ renvoie un objet de la classe Pokemon correspondant au nom donné """ requete = f"Select * from pokemon where nom='{nom_pokemon}';" reponse = obtenir_une_reponse(requete) return Pokemon(reponse) # fonction recherche des évolutions du pokemon def recherche_evolutions(nom_pokemon): """ renvoie la liste des noms des évolutions d'un pokemon exemple: return =['Aquali', 'Givrali', 'Mentali', 'Noctali', 'Nymphali', 'Phyllali', 'Pyroli', 'Voltali'] """ liste_evolutions=[] requete=f"""SELECT nom from pokemon where evolution_de=(select id from pokemon where nom='{nom_pokemon}');""" reponse=obtenir_toutes_les_reponses(requete) for rep in reponse: liste_evolution.append(rep[0]) return liste_evolutions def recherche_types(nom_pokemon): """ Cette fonction renvoie la liste des types du pokemon spécifié en argument argument: nom_pokemon:str return: list exemple: liste=['Acier', 'Vol'] """ liste=[] requete=f"""Select type.nom from type join est_de_type on type.id=id_type join pokemon on est_de_type.id_pokemon=pokemon.id where pokemon.nom'{nom_pokemon}'""" return liste