Invalid syntax ?!

Fermé
Redonus_251 Messages postés 10 Date d'inscription mercredi 21 février 2018 Statut Membre Dernière intervention 22 juin 2020 - Modifié le 21 févr. 2018 à 18:25
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 - 22 févr. 2018 à 20:38
Bonjour/bonsoir,
Je suis en train de travailler sur une calculatrice en Python3 et j'ai un problème :
Je ne comprend pas pourquoi mais l'output me dit que la syntaxe est incorrecte...
Voici le script :

import math
def calculate(): 
    operation = string(input('''
Please type in the math operation you would like to complete: 
+ for addition 
- for subtraction 
* for multiplication 
/ for division 
*
** for power 
% for percentage 
V for square root 
''')
__if operation == 'V':

____if operation == 'V':
_____print('Square root of {} = '.format(number_1))
_____print(math.sqrt(number_1))


Et voici le message d'erreur :


Traceback (most recent call last):
File "python", line 14
if operation == 'V': (le premier "if")
_________________^
SyntaxError: invalid syntax

Si quelqu'un pouvais m'aider, cela m'arrangerais vraiment car je ne trouve pas l'erreur depuis plus de trois jours...

Merci à celui/celle/ceux qui m’aideront ! :)

PS : Je n'ai pas mis de balises de code car elles affichent le programme n'importe comment...
PS#2 : Les "_" servent d'indentation car les espaces ne s'affichent pas.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
21 févr. 2018 à 18:20
Bonjour,
l'erreur de syntaxe vient du fait que tu as oublié une parenthèse fermante après les 3 guillemets.
mais en python3 la fonction input renvoi toujours une chaine de caractère donc pas besoins du string (en plus c'est pas string() c'est str()) et du coup plus besoins de la deuxième parenthèse fermante ;)
1
Redonus_251 Messages postés 10 Date d'inscription mercredi 21 février 2018 Statut Membre Dernière intervention 22 juin 2020 2
Modifié le 22 févr. 2018 à 18:11
Bonjour/bonsoir.
J'ai corrigé ce que tu m'as dit et merci :)
Malheureusement, il y a un autre message d'erreur (IndentationError: unindent does not match any outer indentation level) exactement à la même ligne et au même endroit...)
...
0
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
22 févr. 2018 à 18:47
Bonsoir,
vérifie les indentations parce que comme tu as mis des "_" pour les indentations je ne sais pas si c'est de là que vient le problème (mais tu dois avoir une seule indentation à la ligne 14). Et sinon tu as peut-être plusieurs type d'indentations mélangées par exemple 4 espaces à certains endroits et un \t à d'autres. Donc compare l'indentation aux lignes 3 et 14 pour voir si ce sont les mêmes et essaye de les effacer et de les réécrire pour voir si ça change quelque chose.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928 > quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024
22 févr. 2018 à 20:30
Salut, il a mis des _ car il n'a pas utilisé la coloration syntaxique (je sais j'ai signalé le message pour que la modération le fasse).
Or l'indentation est essentielle en Python (comme tu le sais), donc pour la montrer, il a modifié le message quelques instants après avoir posté, pour ajouter les _.

Quand Baladur (qui n'est pas codeur) a ajouté la coloration, il ne les a pas enlevés.
0
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
22 févr. 2018 à 20:38
Ok aucun soucis c'est juste que en comptant les "_" j'ai l'impression qu'il n'y en a pas le bon nombre à chaque ligne mais je ne savais pas si c'est un problème dans son code original ou si il a juste mis quelques "_" pour représenter les indentations sans les compter. d'où ma suggestion de revérifier tout ça dans son code ;)
0