Menu

Problème programme Python (débutant) [Résolu]

Messages postés
6
Date d'inscription
vendredi 15 février 2019
Dernière intervention
9 mars 2019
-
Bonjour à tous,
J’ai un petit problème avec mon programme sur Python !
Je ne comprend pas pourquoi mon résultat est : <function pgcd at 0x10365f278>
J’aimerais avoir un nombre comme résultat ?


Merci beaucoup pour votre aide !
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
12947
Date d'inscription
mardi 11 mars 2003
Dernière intervention
25 mars 2019
499
1
Merci
Creusons plus loin
tu as défini une fonction avec des paramètres, mais ces paramètres ont le même nom que tes variables globales.
Je pense que Python s'en débrouille très bien, mais le codeur c'est moins sûr.
Pour preuve, puisque la fonction a des paramètres, il faut lui en donner à l'appel, ça tu ne l'as pas fait.
Je te conseille de lire ceci https://www.courspython.com/fonctions.html
Là encore un bon éditeur te signale un problème.

Quand j'étais petit, la mer Morte n'était que malade.
George Burns

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 46740 internautes nous ont dit merci ce mois-ci

Merci je vais aller lire ça de suite ! Je viens tous juste de débuter pour programmer c’est donc encore très complexe !
Commenter la réponse de Whismeril
Messages postés
12947
Date d'inscription
mardi 11 mars 2003
Dernière intervention
25 mars 2019
499
1
Merci
Une fois appliqués mes propres conseils
a = 78
b = 65
def pgcd(n,m):
    if n < m:
        n,m = m,n
    
    while m!=0:
        r,n,m = n%m,m,r
        
    return m
   
print(pgcd(a,b))


mon éditeur me signale un problème à cette ligne
        r,n,m = n%m,m,r

undifined variable 'r'
local variable 'r' is assigned but never used


Là vois tu, je vais te parler d'un que les moins de 40 ans ne peuvent pas connaitre (et encore, le quarantenaire n'avait pas l'âge de coder, moi j'avais 3 ans...).
A l'époque, les capacités de stockage étaient très faibles.
La chasse au gaspillage était à son paroxysme.
Imagine un programme de 1000 lignes, donc 1000 retour chariot, 2ko de perdus, quand une disquette ne pouvait stocker que 360 ko, hou la la.

Je pense que c'est à cause de ça que les codeurs se sont lancé le défit d'écrire le maximum de code sur une ligne.
Aujourd'hui ça fait style, c'est sûr.
Mais encore faut il écrire l'algorithme comme il faut.

Je te conseille donc, de l'écrire sur plusieurs lignes, pour bien décomposer chaque étape, et une fois que ça marche, si après ça t'éclate tu pourras essayer de le remettre sur une seul ligne

Quand j'étais petit, la mer Morte n'était que malade.
George Burns

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 46740 internautes nous ont dit merci ce mois-ci

Merci beaucoup pour votre réponse je vais régler ce problème immédiatement et vous tenir au courant ! Merci encore et bonne journée
xxxpppp
Messages postés
6
Date d'inscription
vendredi 15 février 2019
Dernière intervention
9 mars 2019
-
a=int(input('Donner a:'))
b=int(input('Donner b:'))
def pgcd(a,b):
    if a<b:
        a,b=b,a #on échange a et b
    while b!=0 :
        r=a%b
        a=b
        b=r
    return (a)
print(pgcd(a,b))


Merci beaucoup pour vos conseilles, grâce à vous mon programme marche!! Je vous remercie encore !! :)
Whismeril
Messages postés
12947
Date d'inscription
mardi 11 mars 2003
Dernière intervention
25 mars 2019
499 -
De rien
yg_be
Messages postés
7580
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 mars 2019
451 -
ou bien
while m!=0:
        n,m = m,n%m
Commenter la réponse de Whismeril
Messages postés
12947
Date d'inscription
mardi 11 mars 2003
Dernière intervention
25 mars 2019
499
0
Merci
Bonjour
pour poster un code, merci de suivre et d'appliquer la procédure décrite ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Cela permet en plus de poster un code lisible, indenté (primordial en Python), on peut le copier coller pour tester.

Parce que bêtement, j'ai écrit
return
et toi
returne
et du coup, j'avais la même chose que toi.

Avec un éditeur qui te vérifie la syntaxe en cours de frappe tu ne devrais pas avoir cette erreur.
Perso, je me sers d'anaconda et spider, pour le peu que je code en Python (essentiellement pour le forum) ça me va très bien.

Commenter la réponse de Whismeril