IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Aide paramètres fonctions


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2016
    Messages : 1
    Par défaut Aide paramètres fonctions
    Bonjour à tous,

    Je suis en train de programmer une sorte de jeu de dames simplifié et j'ai un problème assez étrange :

    J'ai une fonction afficher(grille) ou grille est une matrice dont je me sers pour représenter les différentes cases du plateau de jeu. J'ai défini une fonction qui vérifie si après avoir mangé un pion adverse, l'IA (parce que je programme un bot) peut resauter par dessus un pion adverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def re_saut(arrivée, pion_ennemi, grille):
    	X = arrivée[0]
    	Y = arrivée[1]
    	print(X)
    	print(Y)
    	for i in [-2, 0, 2]:
    		for j in [-2, 0, 2]:
    			if i!=j:
    				if (0 <= X+i < 5) and (0 <= Y+j < 5):  #łe plateau de jeu est de 5x5 donc on regarde si la case appartient à cette intervalle
    					if grille[X+i][Y+j]==' ':  #si la case situé à deux cases de distance du point ou est notre pion est vide
    						if grille[X+(i//2)][Y+(j//2)]== pion_ennemi: #et que la case intermédiaire est occupé par un pion ennemi
    							return True #on peut faire un déplacement "capture" en sautant par dessus 
    	return False
    Or le programme me renvoie un "Non obect" parce que la grille semble être du type none (ce qui n'est pas le cas puisque j'arrive parfaitement à l'appeler par d'autres fonctions comme justement ma fonction afficher). Pour corriger cela, j'ai du supprimer grille des arguments de la fonction et mettre global grille au début. Néanmoins, cela a crée d'autres bugs, et j'aimerais savoir ce qu'il se passe (pourquoi il ne reconnait plus grille dans la fonction, pourquoi utiliser un global etc...).

    Merci d'avance !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par NeoLithium Voir le message
    Or le programme me renvoie un "Non obect" parce que la grille semble être du type none (ce qui n'est pas le cas puisque j'arrive parfaitement à l'appeler par d'autres fonctions comme justement ma fonction afficher).
    Ce qu'est la grille est de la responsabilité de l'appelant de votre fonction.
    Et si Python affiche plusieurs lignes dans ses messages d'erreurs, c'est aussi pour vous permettre de trouver cet appelant.
    A part çà, sans les lignes d'erreurs affichées par Python difficile d'en dire plus (çà ne se passe pas dans le code que vous avez posté).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par NeoLithium Voir le message
    Or le programme me renvoie un "Non obect" parce que la grille semble être du type none
    Tu peux rajouter assert grille is not None juste au début de ta fonction. Ainsi, si cette assertion ne se réalise pas, tu auras un plantage direct de ton programme ainsi que la ligne qui a appelé la fonction.

    Citation Envoyé par NeoLithium Voir le message
    ce qui n'est pas le cas puisque j'arrive parfaitement à l'appeler par d'autres fonctions comme justement ma fonction afficher
    Ca ne veut rien dire. Si la grille est modifiée entre la fonction "afficher" et "re_saut"...

    Citation Envoyé par NeoLithium Voir le message
    Pour corriger cela, j'ai du supprimer grille des arguments de la fonction et mettre global grille au début. Néanmoins, cela a crée d'autres bugs
    Ben oui. Les globales c'est rarement une bonne idée. Surtout des globales pour "masquer" un souci de conception car le souci perdure...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Débutant] Aide utilisation fonction paramètre ensemble[]
    Par Seb2913 dans le forum C#
    Réponses: 2
    Dernier message: 26/11/2014, 23h07
  2. Besoin d'aide pour fonctions OpenSSL..... HELP !!!
    Par aide64 dans le forum Langage
    Réponses: 7
    Dernier message: 12/05/2006, 17h46
  3. besoin d'aide sur fonction curseur et procedure
    Par abdel54 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/11/2005, 18h05
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  5. Debutant en C cherche aide pour fonctions!!!!
    Par benji17c dans le forum C
    Réponses: 5
    Dernier message: 30/09/2003, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo