J'ai pas trouver le défaut de mon code python

azer - Modifié le 11 déc. 2023 à 21:08
 jpm - 9 déc. 2023 à 07:48

Bonjour, voici mon code :

import random

mots_bipolaires = {
    "dépression": {
        "description": "Un état de tristesse profonde et prolongée.",
        "devinette": [
            "Je suis souvent décrite comme un nuage sombre qui ne semble jamais partir. Qui suis-je ?",
            "Je suis une ombre qui engloutit le bonheur, me reconnaîtriez-vous ?"
        ]
    },
    "manie": {
        "description": "Une période d'excitation, d'énergie élevée et de comportements impulsifs.",
        "devinette": [
            "Je suis l'énergie débordante qui fait danser les idées à toute vitesse. Qui suis-je ?",
            "Je suis l'excitation incontrôlable qui vous pousse à agir sans réfléchir. Que suis-je ?"
        ]
    },
    "stabilité": {
        "description": "Un état émotionnel équilibré et régulier.",
        "devinette": [
            "Je suis l'équilibre émotionnel recherché par tous, le Graal de la paix intérieure. Qui suis-je ?",
            "Je suis la constance émotionnelle qui fait du bien à l'esprit. Que suis-je ?"
        ]
    },
    "merci pour votre attention": {
        "description": "Une phrase tous les étudiants l'aiment.",
        "devinette": [
            "Les étudiants l'attendent avec impatience à la fin des cours. Que suis-je ?",
            "Une phrase qui reconnaît l'écoute et la considération, très appréciée. Qui suis-je ?"
        ]
    }
    # Ajoutez d'autres mots et leurs descriptions et devinettes ici
}

mots_non_utilises = list(mots_bipolaires.keys())
dernier_mot = None

def choisir_mot_aleatoire():
    global dernier_mot
    mots_disponibles = [mot for mot in mots_non_utilises if mot != dernier_mot]
    
    if not mots_disponibles:
        mots_disponibles = list(mots_bipolaires.keys())
        
    mot_choisi = random.choice(mots_disponibles)
    mots_non_utilises.remove(mot_choisi)
    dernier_mot = mot_choisi
    
    return mot_choisi

def choisir_mot():
    global dernier_mot
    mots_disponibles = [mot for mot in mots_non_utilises if mot != dernier_mot]
    
    if not mots_disponibles:
        mots_disponibles = list(mots_bipolaires.keys())
        
    mot_choisi = random.choice(mots_disponibles)
    mots_non_utilises.remove(mot_choisi)
    dernier_mot = mot_choisi
    
    return mot_choisi

def rejouer():
    while True:
        jeu_pendu()
        print("\nVoulez-vous rejouer ? (Oui/Non) : ", end="")
        reponse = input().lower()
        if reponse == 'oui':
            mots_non_utilises.extend(list(mots_bipolaires.keys()))
        else:
            print("Merci d'avoir joué ! Au revoir.")
            break
def deviner_mot(mot, sens):
    proposition = input("Entrez votre proposition : ").lower()

    if proposition == mot:
        if sens == sens_a_deviner:
            print("Vous avez gagné ! Le mot est '{}' et le sens est '{}'.".format(mot, sens))
        else:
            print("Vous avez deviné le mot correctement, mais pas le sens.")
    else:
        print("Mauvaise réponse.")
        
def devinette(mot):
    return random.choice([dev for dev in mots_bipolaires[mot]['devinette'] if dev != mots_bipolaires[mot]['devinette'][0]])

def afficher_mot(mot, lettres_trouvees):
    mot_affiche = ""

    for lettre in mot:
        if lettre.lower() in lettres_trouvees:
            mot_affiche += lettre + " "
        else:
            mot_affiche += "_ "

    return mot_affiche

def proposition(mot_a_deviner):
    reponse = input("Donner votre proposition:").lower()

    if reponse == mot_a_deviner.lower():
        print(f"Félicitations ! Vous avez deviné le terme '{mot_a_deviner}'. Vous avez gagné !")
        return True
    else:
        print("Ce n'est pas le bon mot.")
        return False

def donner_indice(mot_a_deviner, lettres_trouvees):
    lettres_non_trouvees = [lettre for lettre in mot_a_deviner.lower() if lettre not in lettres_trouvees]

    if lettres_non_trouvees:
        indice = random.choice(lettres_non_trouvees)
        return f"Indice : Le mot contient la lettre '{indice}'."
    else:
        return "Toutes les lettres ont déjà été trouvées !"


def jeu_pendu():
    mot_a_deviner = choisir_mot()
    mot_a_deviner_lower = mot_a_deviner.lower()

    lettres_trouvees = set()
    tentatives_restantes = len(mot_a_deviner) // 3
    partie_terminee = False

    print(f"Devinette : {random.choice(mots_bipolaires[mot_a_deviner]['devinette'])}")

    while True:
        mot_affiche = afficher_mot(mot_a_deviner, lettres_trouvees)

        print(f"\nMot à deviner : {mot_affiche}")
        print(f"Tentatives restantes : {tentatives_restantes}")

        if "_" not in mot_affiche:
            print(f"Félicitations, vous avez deviné le terme '{mot_a_deviner}' !")
            partie_terminee = True

        a = input("Proposez une lettre (ou tapez 'proposition' pour proposer le mot complet, 'give up' pour abandonner, ou 'indice' pour obtenir de l'aide) : ").lower()

        if a == 'proposition':
            if not proposition(mot_a_deviner):
                tentatives_restantes -= 1
                break
        elif a == 'give up':
            print(f"Vous avez abandonné ! Le mot à deviner était '{mot_a_deviner}'.")
            print(f"\nDescription du terme '{mot_a_deviner}' : {mots_bipolaires[mot_a_deviner]}")
            break
        elif a == 'indice':
            print(donner_indice(mot_a_deviner, lettres_trouvees))
        elif len(a) != 1 or not a.isalpha():
            print("Erreur, vous devez entrer une seule lettre.")
        elif a in lettres_trouvees:
            print("Erreur, cette lettre a déjà été proposée.")
        else:
            lettres_trouvees.add(a)
            if a not in mot_a_deviner.lower():
                tentatives_restantes -= 1
                print(f"Erreur, la lettre '{a}' n'est pas dans le mot. Il vous reste {tentatives_restantes} tentatives.")

if __name__ == "__main__":
    print(f"Bienvenue dans le jeu du pendu sur la bipolarité ! Le principe du jeu est de deviner un terme à partir  d'une devinette.")
    rejouer()


 

1 réponse

Bonjour,

déjà ça :

  if sens == sens_a_deviner:    #  --->  "sens_a_deviner"

Si ça peut faire avance le ssscccchmmilblick

JP

0
Rejoignez-nous