Demande aide code Python "unexpected indent"

Résolu
Leonidas1326 Messages postés 2 Date d'inscription dimanche 28 avril 2024 Statut Membre Dernière intervention 28 avril 2024 - 28 avril 2024 à 17:22
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 - 29 avril 2024 à 12:12

Bonjour,

Je debute dans la programmation Python,

J"ai une erreur et je ne sais pas pourquoi.

Pouvez vous m'aider ?

Merci

############################## 
#        PROJET :            #
#                            #
#       LE  CHAMAN           #
#      DE LA GROTTE          #
#                            #
##############################

#Présentation
print ("tu es dans une grotte sombre ou se trouve un Chaman.")
print ("Il te demande d'une voix lugubre : DEVINE COMBIENT IL Y A D'OS SOUS CE CRÂNE ? (il t-en designe un)")
#Choix des os
os=int(input("Quel CHIFFRE choisis-tu entre 1,2 ou 3 ?"))
print()
#Hasard
import random
#Si deviné juste
if os== random.randint(1,3):
        print("Deçu,le Chaman disparait dans un écran de fumée.BRAVO TU AS DEVINER JUSTE!")
        print("Tu peut donc t'enfuir!!")
        print("Mais le Chaman a laissé un mot dèrière lui : 'démembrage'")
        print("Tu continues ta route et tu trébuches sur un petit livre")
        print("Le prends-tu ?")
#Choix du livre
        livre=int(input("Tape 1 pour le prendre et 2 pour continuer ton chemin ."))
#Si pris
        if livre == "1":
                print()
                print("C'est un grimoir de traduction de sort et de formule magique ")
                print("Si tu écrit dans ce livre le livre traduira ton mot en une langue magique ")
                grimoir = {"je":"albag","m'appelle":"savaak","oscar":"cacapuss","maximes":"gentilluss","laurie":"cooluss","abel":
                           "bibouuss","démembrage":"toi qui a ecrit 'démembrage'je vais te donner le mot de passe ,retien le c'est 'linkus' ","chaman":"tuulaabattuu",
                           "python":"arduinuss","coucou":"saluss","abracadabra":"voici le mot a dire a léon 'baki'il te donnera une recompense",
                           "arduino":"python","grimoir":"bapuss","bonjour":"ça vass","oui":"cool","bien":"cool","merci ":"de rien","tu":"fais","fais":"quoi",
                           "quoi":"j'applique un programme qui s'appelle 'le chaman de la grotte'",
                           "j'applique un programme qui s'appelle 'le chaman de la grotte":"arrète"}
                phrase = input ("Ecrit un mot ou une phrase pour en s'avoir la traduction magique .")
                mots = phrase.lower().split()
                motgrimoir = []
                for mot in mots:
                        if mot in grimoir:
                                motgrimoir.append(grimoir[mot])
                        else:
                                motgrimoir.append(mot)
print("Dès que vous avez terminer d'écrire la dèrnière lettre le texte s'efface et laisse apparaitre:","".joint(motgrimoir))
#Si pas pris
       else livre == "2":
                print()  
                print("Tu continues alors ton chemin ") 
                print("Tout à coup un serpent avance vers toi et te mord,son venin atteint"
                       "ton cerveau tu perds connaissance pour t'endormir tu te réveillera jamais ")
        
#Si deviné faux
else:
                
             print("Le Chaman rigole et te transphorme en crapaud.PERDU !!")
             print("Tu es donc devenu un crapeau a tout jamais!!")
             print()
             print("Veut tu retenter ta chance ? Il te suffit de redémarrer le projet")


        
A voir également:

4 réponses

jee pee Messages postés 39721 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 15 mai 2024 9 272
28 avril 2024 à 17:31

Bonjour,

avec en 45 une ligne au 1er niveau il ne peut pas y avoir un else en 47 en niveau n+1, d'ailleurs ce n'est pas un else puisqu'il y a une condition, alors un if ou un elif ?

et le else en 54, il dépend de quel if ? celui en ligne 18 ?


1
jee pee Messages postés 39721 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 15 mai 2024 9 272
Modifié le 28 avril 2024 à 17:55

En 25 tu fais de livre un int, en 27 tu ne dois pas tester "1", mais 1

En 45 c'est join, pas joint

voilà un code amendé, mais je n'ai pas compris ce que tu veux faire avec ton grimoire ;-)

############################## 
#        PROJET :            #
#                            #
#       LE  CHAMAN           #
#      DE LA GROTTE          #
#                            #
##############################

#Présentation
print ("tu es dans une grotte sombre ou se trouve un Chaman.")
print ("Il te demande d'une voix lugubre : DEVINE COMBIENT IL Y A D'OS SOUS CE CRÂNE ? (il t-en designe un)")
#Choix des os
os=int(input("Quel CHIFFRE choisis-tu entre 1,2 ou 3 ?"))
print()
#Hasard
import random
#Si deviné juste
if os== random.randint(1,3):
    print("Deçu,le Chaman disparait dans un écran de fumée.BRAVO TU AS DEVINER JUSTE!")
    print("Tu peut donc t'enfuir!!")
    print("Mais le Chaman a laissé un mot dèrière lui : 'démembrage'")
    print("Tu continues ta route et tu trébuches sur un petit livre")
    print("Le prends-tu ?")
#Choix du livre
    livre=int(input("Tape 1 pour le prendre et 2 pour continuer ton chemin ."))
#Si pris
    if livre == 1:
        print()
        print("C'est un grimoir de traduction de sort et de formule magique ")
        print("Si tu écrit dans ce livre le livre traduira ton mot en une langue magique ")
        grimoir = {"je":"albag","m'appelle":"savaak","oscar":"cacapuss","maximes":"gentilluss","laurie":"cooluss","abel":
                   "bibouuss","démembrage":"toi qui a ecrit 'démembrage'je vais te donner le mot de passe ,retien le c'est 'linkus' ","chaman":"tuulaabattuu",
                   "python":"arduinuss","coucou":"saluss","abracadabra":"voici le mot a dire a léon 'baki'il te donnera une recompense",
                   "arduino":"python","grimoir":"bapuss","bonjour":"ça vass","oui":"cool","bien":"cool","merci ":"de rien","tu":"fais","fais":"quoi",
                    "quoi":"j'applique un programme qui s'appelle 'le chaman de la grotte'",
                   "j'applique un programme qui s'appelle 'le chaman de la grotte":"arrète"}
        phrase = input ("Ecrit un mot ou une phrase pour en s'avoir la traduction magique .")
        mots = phrase.lower().split()
        motgrimoir = []
        for mot in mots:
            if mot in grimoir:
                motgrimoir.append(grimoir[mot])
            else:
                motgrimoir.append(mot)
                print("Dès que vous avez terminer d'écrire la dèrnière lettre le texte s'efface et laisse apparaitre:","".join(motgrimoir))
#Si pas pris
    else:
        print()  
        print("Tu continues alors ton chemin ") 
        print("Tout à coup un serpent avance vers toi et te mord,son venin atteint"
               "ton cerveau tu perds connaissance pour t'endormir tu te réveillera jamais ")
        
#Si deviné faux
else:
    print("Le Chaman rigole et te transphorme en crapaud.PERDU !!")
    print("Tu es donc devenu un crapeau a tout jamais!!")
    print()
    print("Veut tu retenter ta chance ? Il te suffit de redémarrer le projet")

1
Leonidas1326 Messages postés 2 Date d'inscription dimanche 28 avril 2024 Statut Membre Dernière intervention 28 avril 2024
28 avril 2024 à 18:28

merci beaucoup 

je vous suis très reconnaissant

et pour le grimoire je compte crée un programme 

qui laisse ouvrir une porte a l'aide d'un mot de passe en écriture magique

0
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 7 753
Modifié le 29 avril 2024 à 12:25

Bonjour,

Voici à quoi pourrait ressembler ton programme une fois corrigé :

#!/usr/bin/env python3

##############################
#        PROJET :            #
#                            #
#       LE  CHAMAN           #
#      DE LA GROTTE          #
#                            #
##############################

import random

# Présentation
print("Tu es dans une grotte sombre où se trouve un Chaman.")
print("Il te demande d'une voix lugubre : DEVINE COMBIEN IL Y A D'OS SOUS CE CRÂNE ? (il t'en désigne un)")

# Choix des os
os = int(input("Quel CHIFFRE choisis-tu parmi 1, 2 ou 3 ? "))
print()

# Hasard
# Si deviné juste
#if os == random.randint(1, 3):
if True:
    print("Déçu, le Chaman disparaît dans un écran de fumée. BRAVO TU AS DEVINÉ JUSTE !")
    print("Tu peux donc t'enfuir !!")
    print("Mais le Chaman a laissé un mot derrière lui : 'démembrage'.")
    print("Tu continues ta route et tu trébuches sur un petit livre.")
    print("Le prends-tu ?")
    # Choix du livre
    livre = int(input("Tape 1 pour le prendre et 2 pour continuer ton chemin. "))
    # Si pris
    if livre == 1:
        print()
        print("C'est un grimoire de traduction de sort et de formule magique ")
        print("Si tu écris dans ce livre, le livre traduira ton mot en une langue magique.")
        grimoire = {
            "je": "albag",
            "m'appelle": "savaak",
            "oscar": "cacapuss",
            "maximes": "gentilluss",
            "laurie": "cooluss",
            "abel": "bibouuss",
            "démembrage": "toi qui a écrit 'démembrage', je vais te donner le mot de passe. Retiens le, c'est 'linkus' ",
            "chaman": "tuulaabattuu",
            "python": "arduinuss",
            "coucou": "saluss",
            "abracadabra": "voici le mot à dire à Léon 'baki', il te donnera une récompense",
            "arduino": "python",
            "grimoire": "bapuss",
            "bonjour": "ça vass",
            "oui": "cool",
            "bien": "cool",
            "merci ": "de rien",
            "tu": "fais",
            "fais": "quoi",
            "quoi": "j'applique un programme qui s'appelle 'le chaman de la grotte'",
            "j'applique un programme qui s'appelle 'le chaman de la grotte": "arrête"
        }
        phrase = input("Écris un mot ou une phrase pour en connaître la traduction magique. ")
        mots = phrase.lower().split()
        mots_grimoire = []
        for mot in mots:
            if mot in grimoire:
                mots_grimoire.append(grimoire[mot])
            else:
                mots_grimoire.append(mot)
        print("Dès que vous avez terminé d'écrire la dernière lettre, le texte s'efface et laisse apparaître :", " ".join(mots_grimoire))
    # Si pas pris
    # elif livre == 2:
    else:
        print()
        print("Tu continues alors ton chemin.")
        print(
            "Tout à coup un serpent avance vers toi et te mord, son venin atteint "
            "ton cerveau. Tu perds connaissance pour t'endormir tu ne te réveilleras jamais."
        )
# Si deviné faux
else:
     print("Le Chaman rigole et te transforme en crapaud. PERDU !!")
     print("Tu es donc devenu un crapaud a tout jamais !!")
     print()
     print("Veux-tu retenter ta chance ? Il te suffit de redémarrer le projet.")

Quelques remarques au passage :

  • Il faut être rigoureux sur l'indentation, sans quoi python ne comprendra pas ton programme. Pour cela, je te recommande d'utiliser un éditeur adapté pour développer. Sans aller jusqu'à PyCharm, un outil comme Notepad++ si tu es sous Windows ou gedit sous Linux t'aiderait sûrement à mieux gérer l'indentation.
    • Configure ton éditeur pour que tes indentations soient égales à 4 espaces. Ainsi, les tabulations seront remplacées par 4 espaces.
    • En python il faut se méfier entre les espaces et les tabulations, donc moi je ne te conseille de n'utiliser que des espaces.
  • Dans le code original, tu traites livre comme si c'était une chaîne, or tu l'as transformé en entier. Il faut donc corriger le test correspondant en conséquence. De plus tu traites les cas où livre == 1 ou livre == 2 mais pas les autres valeurs que pourraient saisir le joueur. Ici le code est corrigé pour que si le joueur saisisse une valeur différente de 1, on tombe dans le cas livre == 2. Sinon il aurait fallu écrire quelque chose du genre :
    if livre == 1:
        print("cas livre == 1")
    elif livre == 2:
        print("cas livre == 2")
    else:
        print("autre cas")

    ou plus évolué : 

    while True:
        livre = int(input("Choisissez une valeur parmi {1, 2} : "))
        if livre in {1, 2}:
            break
        else:
            print("Valeur invalide ! Recommencez...")
    if livre == 1:
        print("livre =", livre)
    elif livre == 2:
        print("livre =", livre)
    else:
        raise ValueError()
  • Concernant la traduction du grimoire, tu peux réécrire ce passage de manière plus compacte : 
    mots_grimoire = " ".join([
        grimoire.get(mot.lower(), mot)
        for mot in mots
    ])
    print(mots_grimoire)
  • Soigne l'orthographe, cela rendra ton jeu bien plus agréable !

Bonne chance

0