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 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 - 29 avril 2024 à 12:12
mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 - 29 avril 2024 à 12:12
A voir également:
- Unexpected indent python
- Citizen code python avis - Accueil - Outils
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python generator - Télécharger - Sécurité
4 réponses
jee pee
Messages postés
40819
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 février 2025
9 532
28 avril 2024 à 17:31
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 ?
jee pee
Messages postés
40819
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 février 2025
9 532
Modifié le 28 avril 2024 à 17:55
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")
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
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
mamiemando
Messages postés
33539
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 février 2025
7 828
Modifié le 29 avril 2024 à 12:25
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