Python - Programmation - Soucis

Python - Programmation - Soucis - Python - Programmation

Marsh Posté le 02-10-2012 à 23:51:50    

Bonsoir,
j'aimerai savoir pourquoi il me met : syntaxerror, invalid syntax la ou il a mon 'else'? et comment le comment corriger?
Et surtout, pourquoi quand je donne les bonnes coordonnées il me met quand même faux?
Merci d'avance.  
 
__________________________________________________________
from random import randrange
 
print("\t\t\t\t=== LE JEU DE LA BATAILLE NAVALE ===\n\n" )
 
########### Début ###############
choixMode = nombreEntre = False
choixRecommencer = True
 
while choixRecommencer == True: ####Si l'utilisateur a choisi oui
    while choixMode < 1 or choixMode > 2: ####Si on a choisi aucun des deux modes
        print("1.- Jouer" )
        print("2.- Sortir\n" )
        print("Votre choix ?" )
        choixMode = input()
        choixMode = int(choixMode)
 
        if choixMode == 1: #####jouer
            x = randrange (1, 11) ####Nombre au hasard des abscisses
            y = randrange (1, 11) ####Nombre au hasard des ordonnees
            print("(",x,";",y ," )\n" ) ### savoir oordonnes du debut
            e = int(x)
            f = int(y)
            a=int(input("entrez l'abscisse" ))
            b=int(input("entrez l'ordonnée" ))
 
            if  a and b!= e and f: ### si différent
                print("Dans l'eau!\n" )
            elif a and b==e and f:  ### si pareil
                print("Coulé!\n" )
            else a = e or a =f or b=e or b=f: ### si un coté commun
                print ("en vue" )
 
 
######### On demande s'il veut rejouer #########
        print("Voulez-vous refaire une partie ? Tapez 0 pour non ou 1 pour oui :" )
        choixRecommencer = input()
        choixRecommencer = bool(int(choixRecommencer))

Reply

Marsh Posté le 02-10-2012 à 23:51:50   

Reply

Marsh Posté le 21-10-2012 à 17:00:58    

Citation :

j'aimerai savoir pourquoi il me met : syntaxerror, invalid syntax la ou il a mon 'else'? et comment le comment corriger?


Parce que "else" ne prend pas de condition, si tu veux mettre une condition faut utiliser "elif", "else" c'est pour le cas terminal si aucun test n'a réussi. Accessoirement, les assignation ne sont pas des expressions en Python, donc tu peux pas écrire:

Code :
  1. if a = e:
 

edit: et maintenant que je lis tes expressions booléennes, elles n'ont pas vraiment de sens: "and" et "or" sont des opérateurs booléens, ce qui n'est pas du tout la manière dont tu les utilises.

 

enfin, ton chaînage de tests n'est pas vraiment logique: tu mets d'abord un test pour l'échec, puis un test pour le hit, et enfin un test pour le glance. Il serait plus logique de mettre le hit en premier et le glance en second:

Code :
  1. if a == e and b == f:
  2.    print("Touché" )
  3. elif [condition pour glance]:
  4.    print("En vue" )
  5. else:
  6.    print("Dans l'eau" )


La première condition peut aussi utiliser des tuples:

Code :
  1. if (a, b) == (e, f):
  2.    print("Touché" )


enfin, j'ai beau essayer la condition de glance ne me semble avoir ni queue ni tête, si le bateau est en (3, 7) et que je tire en (7, 3) ça va me dire "en vue" alors que je suis à l'autre bout de la carte:

       
       
       O
       
       
       
       
   X    
       
       


edit 2: pfouuu, il y a plein de trucs qui n'ont pas vraiment de sens où sont du mauvais python, genre si on demande de sortir il demande si on veut refaire une partie, et si on veut refaire une partie ben ça marche pas


Message édité par masklinn le 21-10-2012 à 17:13:41

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed