pokemons.py

Created by huriel-mercier

Created on January 16, 2026

4.38 KB

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

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.