Erreur Python

Kooky -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un exercice à faire , je pense avoir respecté la syntaxe mais j'obtiens une erreur
SyntaxError: invalid syntax

Mon code :

print("Soldes des comptes")

a=str(input("Lancement de la gestion des comptes ? Y/N")
if a=="Y"
    b=int(input("Solde du compte de Guillaume?"))
    c=int(input("Solde du compte de Marion?"))
if b <= 0 and c <= 0 :
        print("Tous les deux en negatif !", "\n" ,"Impossible de retablir la situation")
elif b>= 0 and c >= 0 :
        print("Tous les deux en positif !")
elif b <=0 and c >= 0 :
    print ("Guillaume est en negatif. Marion peut lui transferer", c-b )
elif b >= 0 and c <= 0 :
        print
elif (a=="N")
    print("Ok. A bientot.")


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

Merci d'y penser dans tes prochains messages.

6 réponses

  1. jee pee Messages postés 31872 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    Bonjour,

    Une instruction qui initialise un bloc dépendant indenté (if, while, ...) se termine par
     : 


    Ils manquent en ligne 4 et 15

    Puis l'indentation sur ta question, n'est pas correcte, mais c'est peut être du au fait qu'un modérateur à ajouté la coloration syntaxique du code que tu n'avais pas mise. La ligne 7 devrait être alignée sur la 6 et ainsi de suite.

    Et si l'utilisateur répond "OUI" au lieu de Y ou N il se passe quoi ?

    0
    1. Kooky
       
      J'ai essayé, mais lorsque je mets des : devant chaque if et elif, Pycharm me signale une erreur de syntaxe. Je ne sais pas ce qui cloche.
      0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    elif b >= 0 and c <= 0 : il y a un print tout seul

    Pourquoi des parenthèses ligne 15 et par sur les autres tests ?
    Autant en mettre partout, ca marche mais ce serait plus homogène
    0
  3. Kooky
     
    Merci.
    Mais j'avoue que je ne comprends pas encore complètement comment aligner mes conditions pour qu'elles soient fonctionnelles.
    0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    c'est simple:
    if(une condition):
         on fait un truc
    elif(une autre condition):
         on fait un autre truc
    else:
        sinon, on fait autre chose
    

    Les actions sont indentées par rapport aux tests if, elif, else

    Dans ton cas si la réponse au 1er test est 'Y', on demande les soldes et on teste les valeurs
    donc les lignes 5 à 14 sont ce que l'on fait dans ce cas et donc elles sont toutes indentées par rapport à la ligne 4

    On pourrait même faire ça:

    a=str(input("Lancement de la gestion des comptes ? Y/N")
    if(a=="Y"):
        b=int(input("Solde du compte de Guillaume?"))
        c=int(input("Solde du compte de Marion?"))
    
        if(b <= 0):
            if(c <= 0):
                print("Tous les deux en negatif !", "\n" ,"Impossible de retablir la situation")
            elif(c >= 0):
                print ("Guillaume est en negatif. Marion peut lui transferer", c-b )
        elif(b>= 0):
        	if(c >= 0):
                print("Tous les deux en positif !")
            elif(c <= 0):
                print("Marion est en negatif. Guillaume peut lui transferer", b-c)
    else:
        print("Ok. A bientot.")
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    Remarques:

    si le 1er test est

    if(b <= 0):


    le elif est forcement

    if(b > 0):


    (strictement > à 0)

    Remplace les noms de variables comme a,b,c par des noms plus parlants

    reponse = input(.....

    solde_Guillaume, solde_Marion
    0
  7. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Pas besoin de faire a=str(input( : on saisi forcément une string

    b = int(input( : on saisi un entier, donc le solde du compte ne peut pas etre comme ça : 1957.36

    Pour revenir à la remarque de Jee Pee: que se passe-t-il si la réponse est différente de Y ou N ?
    Il faut reposer la question tant que ce n'est pas correct, donc faire une boucle tant que réponse n'est ni 'Y' ni 'N', ca ressemblerai à ça:
    reponse = ''
    
    while(not reponse in ['Y', 'N']):
        os.system('cls' if os.name=='nt' else 'clear')
        reponse = input("Lancement de la gestion des comptes ? (Y/N) : ")
    
    0