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

Signaler
Messages postés
6
Date d'inscription
vendredi 15 février 2019
Statut
Membre
Dernière intervention
9 mars 2019
-
Messages postés
11465
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 juillet 2020
-
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 !

3 réponses

Messages postés
14463
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
4 juillet 2020
553
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://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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64341 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 !
Messages postés
14463
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
4 juillet 2020
553
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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64341 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
Messages postés
6
Date d'inscription
vendredi 15 février 2019
Statut
Membre
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 !! :)
Messages postés
14463
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
4 juillet 2020
553
De rien
Messages postés
11465
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 juillet 2020
655
ou bien
while m!=0:
        n,m = m,n%m
Messages postés
14463
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
4 juillet 2020
553
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.