Débutant en Python

Débutant en Python - Python - Programmation

Marsh Posté le 27-11-2012 à 08:35:44    

Bonjour,
je suis débutant en Python, j'essaie d'apprendre seul avec des livres...
Dans mon premier achat "Programmation en Python pour les mathématiques" j'ai un exercice résolu que je ne comprends pas.
En fait je le comprend très bien mais cela ne fonctionne pas :
Ce sont des exemples très simples, on a une fonction "reste(a,b)"  qui revoie le reste dans la division euclidienne de a par b (avec soustractions à la place de %), voici les solutions du livre :

Code :
  1. def reste(a, b):
  2.     if b == 0:
  3.         return None
  4.     while a >= b:
  5.     a = a - b
  6.     return a


Et une fonction "pgcd(a,b)" qui renvoie, comme son nom l'indique, le pgcd de a et b :

Code :
  1. def pgcd(a, b):
  2.     while b > 0:
  3.         a, b =b, reste(a, b)
  4.     return a


Mon problème n'est pas d'un point de vue algorithmique, quand j’exécute la fonction pgcd avec IDLE (Python3.3) j'ai un message d'erreur. J'ai essayé d'ajouter un "import reste" au début du programme pgcd, je n'ai plus de message d'erreur mais le programme ne s'achève pas...
Ma question est donc la suivante : comment fait-on, en Python, pour faire appelle à un programme à l'intérieur d'un autre programme ?

Reply

Marsh Posté le 27-11-2012 à 08:35:44   

Reply

Marsh Posté le 28-11-2012 à 12:42:52    

C'est pas très clair en fait, au niveau physique (en terme de fichiers sur ton disque), où sont "reste" et "pgcd"? Sont-ils dans le même fichier, dans des fichiers différents, autre?


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

Marsh Posté le 28-11-2012 à 19:59:07    

Bonsoir et merci pour la réponse.
Désolé de ne pas être très clair.... je m'en suis douté quand j'ai vu que personne ne répondait.
Alors la fonction pgcd est écrite dans le fichier pgcd.py et se trouve sur mon bureau. Même chose pour la fonction reste, elle est dans un fichier reste.py sur mon bureau aussi.
Mais peut être que ce n'est pas comme cela qu'il faut s'y prendre ?

Reply

Marsh Posté le 28-11-2012 à 21:33:18    

cuati a écrit :

Bonsoir et merci pour la réponse.
Désolé de ne pas être très clair.... je m'en suis douté quand j'ai vu que personne ne répondait.
Alors la fonction pgcd est écrite dans le fichier pgcd.py et se trouve sur mon bureau. Même chose pour la fonction reste, elle est dans un fichier reste.py sur mon bureau aussi.
Mais peut être que ce n'est pas comme cela qu'il faut s'y prendre ?


Dépend de plein de choses. Je présume que le livre mettait les deux dans le même fichier.
 
Pour commencer, en haut de pgcd.py ajoute "import reste", et replace l'appel "reste(a, b)" par "reste.reste(a, b)" et vois ce que ça fait.


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

Marsh Posté le 01-12-2012 à 09:15:33    

Merci beaucoup, ça marche ! :D

Reply

Marsh Posté le 05-08-2013 à 17:18:40    

Bonjour déjà en respectant l'indentation cela marche mieux...

Code :
  1. def reste(a, b):
  2.     if b == 0:
  3.         return None
  4.     while a >= b:
  5.         a = a - b
  6.     return a


et puis si tu l'importe ensuite pour le pgcd cela marche encore mieux... :sol:

Code :
  1. import reste
  2. def pgcd(a, b):
  3.     while b > 0:
  4.         a, b =b, reste.reste(a, b)
  5.     return a


et voilou....

Message cité 1 fois
Message édité par yvkoe le 05-08-2013 à 17:30:29
Reply

Marsh Posté le 05-08-2013 à 17:54:40    

yvkoe a écrit :

Bonjour déjà en respectant l'indentation cela marche mieux...

Code :
  1. def reste(a, b):
  2.     if b == 0:
  3.         return None
  4.     while a >= b:
  5.         a = a - b
  6.     return a


et puis si tu l'importe ensuite pour le pgcd cela marche encore mieux... :sol:

Code :
  1. import reste
  2. def pgcd(a, b):
  3.     while b > 0:
  4.         a, b =b, reste.reste(a, b)
  5.     return a


et voilou....


8 mois en retard alors que la réponse avait déjà été donnée, c'était peut-être pas nécessaire [:petrus75]


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

Marsh Posté le 06-08-2013 à 12:03:13    

Je passais par là...

Reply

Marsh Posté le 06-08-2013 à 12:42:18    

yvkoe a écrit :

Je passais par là...


Tu passais par là et hop tu remontes des threads de plus de 6 mois comme ça [:petrus dei]


---------------
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