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 :

fonction qui ne se lance pas toute seule et qui cesse de fonctionner après le choix de la variables


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut fonction qui ne se lance pas toute seule et qui cesse de fonctionner après le choix de la variables
    Bonjour, j'ai codé le problème mathématique de monty hall, et l'interface ne semble pas trouver d'erreur dans mon programme. Seulement, tout d'abord, il me faut écrit le nom du programme dans l'interface d'exécution pour qu'il veuille bien commencer et en plus, lorsque je le lance, la fonction qui représente la totalité du programme s'arrête à la partie "input", de laquelle sont tirés les données nécessaires à l'exécution de la suite du programme. Autrement dit, le programme me demande d'entrer une valeur puis n'en fait rien alors qu'il le devrait. Merci de m'aider.
    Images attachées Images attachées    

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par speedman12 Voir le message
    Autrement dit, le programme me demande d'entrer une valeur puis n'en fait rien alors qu'il le devrait
    Si vous postez du code apprenez à utiliser la balise CODE (ou le # dans l'éditeur) plutôt que d'en poster une image.
    Ajoutez un print (choix_joueur) après la saisie (choix_joueur = input(....)) et comparez la valeur affichée a celles de vos variables a, b, c...

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

  3. #3
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    La sortie d'une input() est de type str et tes variables a, b, c sont des int. C'est pourquoi tes tests if ne sont jamais vrais.
    ...
    Par ailleurs, ton random.choice() va te renvoyer une exception ...

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par speedman12 Voir le message
    j'ai codé le problème mathématique de monty hall
    Oui, de façon bien maladroite. Des répétitions en cascade, trois variables pour trois choses identiques (à savoir trois portes) ce qui alors se code par l'utilisation d'un tableau qui permet de factoriser les traitements. Plus un test sur a, un test sur b et un test sur c. En opposition à quoi ce dernier test? Au fait qu'il aurait pu choisir d ??? Idem pour le second tour où il peut choisir 1 ou 2 et où tu testes s'il a choisi 1 sinon tu regardes s'il a choisi 2 (sait-on jamais, des fois qu'il aurait choisi 3...).
    Accessoirement les 3 variables a, b et c représentENT les différentes portes vu qu'elles sont plusieurs à les représenter. De plus "mourir" ne prend qu'un "r", et quand une porte "fût choisie" alors on accord le participe passé au sujet (la porte). Et ce serait peut-être à toi de revoir tes probas ma petite car tu dénigres le joueur qui change son choix et qui perd alors que justement il a bien joué les probas puisque changer son choix est la décision qui offre les meilleures chances de gagner.

    Coder Monty Hall c'est surtout faire des millions d'essais et compter combien de fois on gagne quand on ne change pas vs combien de fois on gagne quand on change ; pour montrer statistiquement que le joueur a plutôt avantage à changer son choix (axiome de base, toujours profiter d'une information qui nous est donnée, information qui est la porte ouverte par le présentateur). Parce que là, tu vas lancer ton truc 3 fois et tu verras que c'est totalement sans intérêt vu que tu connais la bonne porte...

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random
     
    def monty_hall(n, *, change, debug=False):
    	gain=0
    	for i in range(n):
    		# La porte gagnante est choisie
    		porte=random.choice("abc")
     
    		# La porte jouée est choisie
    		jeu=random.choice("abc")
     
    		# Si changement
    		if change:
    			# On mémorise la porte jouée car elle va changer
    			mem=jeu
     
    			# Si la porte gagnante n'a pas été choisie
    			if porte != jeu:
    				# La porte rejouée est obligatoirement gagnante
    				jeu=porte
    			else:
    				# La porte rejouée perd obligatoirement (on en prend donc une autre au pif)
    				jeu=random.choice(tuple(set("abc") - set(porte)))
    			# if
    		# if
     
    		# Si la porte gagnante a été choisie
    		if porte == jeu:
    			# Le gain augmente
    			gain+=1
     
    		# En mode debug
    		if debug:
    			print(
    				"Essai n° {0}/{1} - {2}, porte gagnante {3} ({4}): gain {5}".format(
    					i+1,
    					n,
    					"Premier choix {0}, second choix {1}".format(mem, jeu)\
    					if change else "Choix unique {0}".format(jeu),
    					porte,
    					"gagné" if porte == jeu else "perdu",
    					gain,
    				)
    			)
    		# if
    	# for
     
    	# On retourne le gain (finalement c'est la seule chose qui importe)
    	return gain
    # monty_hall()
     
    if __name__ == "__main__":
    	random.seed()
    	n=1_000_000
    	debug=False
     
    	g=monty_hall(n, change=True, debug=debug)
    	print("Avec changement: %d tirages, %d gains, ratio %.02f%%" % (n, g, g*100 / n))
     
    	g=monty_hall(n, change=False, debug=debug)
    	print("Sans changement: %d tirages, %d gains, ratio %.02f%%" % (n, g, g*100 / n))
    # if
    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]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut Remerciements et nouvelle question
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    La sortie d'une input() est de type str et tes variables a, b, c sont des int. C'est pourquoi tes tests if ne sont jamais vrais.
    ...
    Par ailleurs, ton random.choice() va te renvoyer une exception ...
    Merci beaucoup, je débute encore et je crois bien que tu m'as fait franchir une grosse étape. Néanmoins pourrais tu développer un peu plus sur les exceptions ? le programme marche parfaitement au détail près que la fonction random crèe une sorte de boucle qui fait que la partie de mon programme concernée est jouée deux fois avant que la suite soit jouée.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Oui, de façon bien maladroite. Des répétitions en cascade, trois variables pour trois choses identiques (à savoir trois portes) ce qui alors se code par l'utilisation d'un tableau qui permet de factoriser les traitements. Plus un test sur a, un test sur b et un test sur c. En opposition à quoi ce dernier test? Au fait qu'il aurait pu choisir d ??? Idem pour le second tour où il peut choisir 1 ou 2 et où tu testes s'il a choisi 1 sinon tu regardes s'il a choisi 2 (sait-on jamais, des fois qu'il aurait choisi 3...).
    Accessoirement les 3 variables a, b et c représentENT les différentes portes vu qu'elles sont plusieurs à les représenter. De plus "mourir" ne prend qu'un "r", et quand une porte "fût choisie" alors on accord le participe passé au sujet (la porte). Et ce serait peut-être à toi de revoir tes probas ma petite car tu dénigres le joueur qui change son choix et qui perd alors que justement il a bien joué les probas puisque changer son choix est la décision qui offre les meilleures chances de gagner.

    Coder Monty Hall c'est surtout faire des millions d'essais et compter combien de fois on gagne quand on ne change pas vs combien de fois on gagne quand on change ; pour montrer statistiquement que le joueur a plutôt avantage à changer son choix (axiome de base, toujours profiter d'une information qui nous est donnée, information qui est la porte ouverte par le présentateur). Parce que là, tu vas lancer ton truc 3 fois et tu verras que c'est totalement sans intérêt vu que tu connais la bonne porte...

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random
     
    def monty_hall(n, *, change, debug=False):
    	gain=0
    	for i in range(n):
    		# La porte gagnante est choisie
    		porte=random.choice("abc")
     
    		# La porte jouée est choisie
    		jeu=random.choice("abc")
     
    		# Si changement
    		if change:
    			# On mémorise la porte jouée car elle va changer
    			mem=jeu
     
    			# Si la porte gagnante n'a pas été choisie
    			if porte != jeu:
    				# La porte rejouée est obligatoirement gagnante
    				jeu=porte
    			else:
    				# La porte rejouée perd obligatoirement (on en prend donc une autre au pif)
    				jeu=random.choice(tuple(set("abc") - set(porte)))
    			# if
    		# if
     
    		# Si la porte gagnante a été choisie
    		if porte == jeu:
    			# Le gain augmente
    			gain+=1
     
    		# En mode debug
    		if debug:
    			print(
    				"Essai n° {0}/{1} - {2}, porte gagnante {3} ({4}): gain {5}".format(
    					i+1,
    					n,
    					"Premier choix {0}, second choix {1}".format(mem, jeu)\
    					if change else "Choix unique {0}".format(jeu),
    					porte,
    					"gagné" if porte == jeu else "perdu",
    					gain,
    				)
    			)
    		# if
    	# for
     
    	# On retourne le gain (finalement c'est la seule chose qui importe)
    	return gain
    # monty_hall()
     
    if __name__ == "__main__":
    	random.seed()
    	n=1_000_000
    	debug=False
     
    	g=monty_hall(n, change=True, debug=debug)
    	print("Avec changement: %d tirages, %d gains, ratio %.02f%%" % (n, g, g*100 / n))
     
    	g=monty_hall(n, change=False, debug=debug)
    	print("Sans changement: %d tirages, %d gains, ratio %.02f%%" % (n, g, g*100 / n))
    # if
    Pour ce qui concerne le dernier paragraphe, je sais bien. Je comptais après rajouter une instruction pour tester la loi des grands nombres sur le problème et démontrer que c'est bien en jouant deux fois qu'on a le plus de chance. Mais, j'admets que conseiller à un joueur qui a joué deux fois de revoir ses probas est une contradiction, je vais changer la phrase en conservant le même style. Merci!

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par speedman12 Voir le message
    Néanmoins pourrais tu développer un peu plus sur les exceptions ?
    Une exception est un évènement qui se produit quand Python est incapable d'exécuter une instruction. Exemple une fonction qui reçoit n et renvoie 1/n à laquelle on lui passe 0. Python se trouve alors en échec et fait remonter cet échec à toute la pile des instructions qui ont amené cet échec pour finir par quitter le programme.
    Dans le cas mentionné par Hominidé, la fonction choice() veut un seul paramètre et toi tu lui en passes deux...
    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]

  8. #8
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    la fonction choice() veut un seul paramètre et toi tu lui en passes deux...
    Illustration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> import random
    >>> random.choice(1, 2)
    Traceback (most recent call last):
      File "/usr/lib/python3.8/idlelib/run.py", line 559, in runcode
        exec(code, self.locals)
      File "<pyshell#6>", line 1, in <module>
    TypeError: choice() takes 2 positional arguments but 3 were given
    >>>
    L'interprétateur nous annonce une erreur de TypeError.
    Dans ce cas l'exception rencontrée ne sera pas comprise par un débutant n'ayant pas étudié les classes, car il ne comprendra pas pourquoi l'interprétateur lui dit que 3 arguments a été transmis à choice alors qu'on ne lui en a précisé que deux (une personne qui a connaissance de comment s'organise une classe comprendra que le 3 élément dont il est fait mention correspond au self), mais il comprendra qu'il y a un souci avec les arguments transmis.

    Effectivement, on peut voir que choise attend une séquence (== un élément indexable comme les list, tupples, string):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> help(random.choice)
    Help on method choice in module random:
     
    choice(seq) method of random.Random instance
        Choose a random element from a non-empty sequence.
    Ceci sera donc correct:

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    merci, le code marche parfaitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    >>>import random 
    def monty_hall(): #on définit une fonction au nom de monbty hall, le célèbre problème de logique 
        porte =["a","b","c"]
        porte_perdante =["b","c"]
        choix_du_joueur=input("soit a b et c trois portes dont une seule permet la survie laquelle choisissez vous? ")# l'on demande au joueur sur quelle porte il veut miser 
        if choix_du_joueur =="a": # on définit qu'après un choix de la porte a il faut montrer soit la porte b soit la porte c
            print(f"la porte {random.choice(porte_perdante)} mène à un gouffre")
            avis_de_participation=input("souhaitez vous changer de porte maintenant que vous avez vu celle-ci? répondre par oui ou par non")#l'on demande au joueur s'il veut participer à un second tour 
        elif choix_du_joueur =="b": #ici, l'on définit qu'un choix de la porte b  implique l'ouverture de la porte c 
            print("la porte c mène a un gouffre")
            avis_de_participation=input("souhaitez vous changer de porte maintenant que vous avez vu celle-ci?répondre par oui ou par non ") # on demande au joueur s'il veut participer au seconde tour 
        else: # là,on décide que le choix de la porte c mène à l'ouverture de la porte b
            print("la porte b mène à un gouffre")
            avis_de_participation=input("souhaitez vous changer de porte maintenant que vous avez vu celle-ci? répondre par oui ou non")# on s'attache à savoir si le joueur veut participer au seond tour 
            print(avis_de_participation)
        if avis_de_participation=="non" and choix_du_joueur=="a":# ici on ne lance pas de second tour car le joueur a dit non et on annonce une victoire s'il avait choisi a  
            print("vous survivez à ce tour")
        elif avis_de_participation=="non" and choix_du_joueur!="a": # sinon on annonce une défaite 
            print(" vous êtes sur le point de mourrir,faites vos adieux!")
        else: # ici on lance un second tour car le joueur a dit oui 
            choix_du_joueur2=input("sur quelle porte, misez-vous pour ce second tour?")# on lui demande sur quel porte il désire miser cette fois-ci
            if choix_du_joueur2=="a": # s'il mise sur la a, on le félicite 
                print("vous êtes un petit malin vous")
            else: #sinon on se paie sa tête 
                print("et non, ma petite")

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par speedman12 Voir le message
    merci, le code marche parfaitement
    Mouais. Sans parler de toutes ces redondances qui sont toujours là, tu ne penses pas que tu gagnerais en lisibilité à l'aérer un peu ???

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random 
     
    # on définit une fonction au nom de monty hall, le célèbre problème de logique 
    def monty_hall():
    	# On definit la porte gagnante
    	gain=random.choice("abc")
     
    	# On demande au joueur la porte qu'il veut ouvrir
    	while True:
    		porte=input("soit a b et c trois portes dont une seule permet la survie laquelle choisissez vous? ").lower()
    		if porte in "abc": break
    		print("Seulement a, b ou c !!!")
    	# while
     
    	# Si le joueur a choisi une porte perdante
    	if porte != gain:
    		# On lui montre l'autre porte perdante
    		montre=(set("abc") - set(gain) - set(porte)).pop()
    	else:
    		# Il a choisi la porte gagnante, on lui en montre donc une autre au pif
    		montre=random.choice(tuple(set("abc") - set(gain)))
    	# if
     
    	# On lui ouvre la porte montrée
    	print("Vous avez choisi [%s], j'ouvre [%s]" % (porte, montre))
     
    	# On lui propose de changer
    	autre_porte=(set("abc") - set(porte) - set(montre)).pop()
    	change=input("Voulez-vous changer et ouvrir maintenant [%s] (O/N)? " % autre_porte) in "oO"
     
    	# S'il change, la porte change
    	if change: porte=autre_porte
     
    	# Résultat
    	print("La porte était [%s]" % gain)
    	if porte == gain:
    		print("Vous avez bien fait de changer" if change else "Bravo, vous avez de la chance")
    	else:
    		print("Dommage, changer était pourtant la meilleure option" if change else "Dommage, vous devriez revoir les probabilités")
    	# if
    # monty_hall()
     
    if __name__ == "__main__":
    	monty_hall()

    [edit]code corrigé suite aux conseils d'Hominidé.
    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]

  11. #11
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Sve@r: J'aime bien ton approche

    @speedman12: Un outil intéressant à connaitre qui permet de visualiser le déroulement pas à pas d'un programme est PythonTutor:
    https://pythontutor.com/visualize.html#mode=edit

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Sve@r: J'aime bien ton approche
    Moi aussi

    Citation Envoyé par Hominidé Voir le message
    @speedman12: Un outil intéressant à connaitre qui permet de visualiser le déroulement pas à pas d'un programme est PythonTutor:
    Joli, moi aussi il me plait. Je le garde en raccourci !!!
    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]

  13. #13
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    C'est bel outil pédagogique. Très utile lorsqu'on débute. à communiquer .
    ...
    Citation Envoyé par Hominidé Voir le message
    Sve@r: J'aime bien ton approche
    Il y a juste un petit détail qui me grattouille à la ligne 20 et 27:
    ligne 27:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    autre_porte=tuple(set("abc") - set(porte) - set(montre))[0]
    Pourquoi passer par un tuple()[0]?
    Je trouve ça un peu lourd et pas particulièrement explicite.
    Je lui préfère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (set("abc") - set(porte) - set(montre)).pop()

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    ligne 27:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    autre_porte=tuple(set("abc") - set(porte) - set(montre))[0]
    Pourquoi passer par un tuple()[0]?
    Je trouve ça un peu lourd et pas particulièrement explicite.
    Oui, moi aussi ça m'embêtait mais j'ai pas trouvé mieux (tu en as un autre équivalent ligne 20). J'avais pensé aussi à "abc".replace(porte, "").replace(montre, "")...

    Citation Envoyé par Hominidé Voir le message
    Je lui préfère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (set("abc") - set(porte) - set(montre)).pop()
    Ah oui, ça c'est mieux. Comme quoi, Python a tellement d'outils que c'est pas évident de trouver le bon.

    J'ai rectifié dans mon code d'origine.
    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. Selection date DTPicker2 lance Userform_Activate tout seul?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/02/2018, 10h27
  2. Autoexec ne se lance pas tout le temps
    Par bdf94 dans le forum Macros Access
    Réponses: 12
    Dernier message: 27/09/2013, 07h17
  3. ma fonction ne se la lance pas - onsubmit
    Par exe2bin dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/10/2012, 22h07
  4. Fonctions Jquery ne se lance pas sous Chrome
    Par akrogames dans le forum jQuery
    Réponses: 0
    Dernier message: 18/04/2011, 18h23
  5. La fonction appelée ne se lance pas (objet requis)
    Par beegees dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/09/2006, 11h20

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