Python3 et indentation Le sujet est résolu

Tout ce qui concerne la programmation.
Répondre
tony
Membre
Membre
Messages : 446
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

je m'aperçois que si l'indentation n'est pas correcte l'exécution d'une commande retourne une erreur.
Exemple avec la bonne indentation= 3 espaces blancs, faite par moi-même:

Code : Tout sélectionner

>>> nombre1 = input("nombre1 = ")
nombre1 = 15
>>> print(nombre1)
15
>>> if isinstance(number1, str):
...     print("yes")
... else:
...     print("no")
... 
yes
>>> 
Si je n'interviens pas et que j'utilise la touche "entrée' après la 1ère ligne "if isinstance...", voilà ce que ça donne:

Code : Tout sélectionner

>>> if isinstance(number1, str):
... print("yes")
  File "<stdin>", line 2
    print("yes")
    ^
IndentationError: expected an indented block after 'if' statement on line 1
Comment connaître la bonne indentation à utiliser? Est-elle constante? Peut-on la rendre automatique?

PS: j'ai l'impression que l'indentation reste de 3 espaces blancs par rapport à la dernière condition if, else, elif ... etc, utilisée. Dommage que le programme Python3 ne fasse pas ça automatiquement lors d'un retour à la ligne avec "entrée"
Debian 12/ Xfce
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 6132
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Bonjour,
l'indentation est fondamentale en python.
Pour te faciliter la vie, tu peux utiliser un éditeur de texte prévu pour écrire un script python. Tu en a de très simples, comme geany.
On appelle ça un"environnement de développement intégré". IDE en anglais
tony
Membre
Membre
Messages : 446
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

j'ai installé le paquet "idle" qui était recommandé pour avoir un shell Python. Hormis le retour en arrière suite à une indentation ça a l'air de fonctionner. Sauf ceci, à partir de # Affiche le résultat , que je ne comprends pas:

Code : Tout sélectionner

if operation == "+":
    resultat = nombre1 + nombre2
elif operation == "/":
     # Vérifie si la variable `nombre2` n'est pas nulle pour la division
    if nombre2 == 0:
        print("Erreur: impossible de diviser par zéro.")
        raise SystemExit("Fin du programme")
    resultat = round(nombre1 / nombre2, 2)

# Affiche le résultat
print(f"Le résultat de l'opération est: {round(resultat, 2)}")
SyntaxError: invalid syntax   ----> incompris, recopié plus bas, ça fonctionne. Où est le problème?

# Affiche le résultat
print(f"Le résultat de l'opération est: {round(resultat, 2)}")
Le résultat de l'opération est: 63
Debian 12/ Xfce
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 6132
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Est ce que la ligne resultat = .. est bien indentée ?
tony
Membre
Membre
Messages : 446
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

piratebab a écrit : 01 oct. 2025, 16:35 Est ce que la ligne resultat = .. est bien indentée ?
je pense, mais il doit y avoir une autre erreur car l'opération effectuée, une addition, n'est pas celle demandée = une division. Je reprends tout, un reset est nécessaire. J'ai dû m'habituer à ce nouveau shell, et j'ai fait plusieurs erreurs que j'ai pensé avoir corrigées, mais pas sûr du tout. Donc RAZ.
Debian 12/ Xfce
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 6132
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Utilise des fichiers .py. Ce sera plus simple pour comprendre ce que tu fais
Le shell c'est bien pour tester une fonction
tony
Membre
Membre
Messages : 446
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

piratebab a écrit : 01 oct. 2025, 16:45 Utilise des fichiers .py. Ce sera plus simple pour comprendre ce que tu fais
Le shell c'est bien pour tester une fonction
effectivement, j'ai utilisé main.py fourni par openclassrooms sans problème. Je laisse le shell Python tranquille.

Je vais voir cette histoire d'éditeur car avec vim c'est galère pour moi, je ne sais l'utiliser que basiquement. La navigation dans un fichier vim n'est pas mon fort.

Merci pour les conseils.
Debian 12/ Xfce
Répondre