Inscription / Connexion Nouveau Sujet
Niveau LicenceMaths 2e/3e a
Partager :

Python

Posté par
mathou57124
25-04-20 à 14:35

Bonjour,

En python , j'aimerai créer une fonction p qui afficherai sous forme de listes la pré-période ainsi que la période du développement décimal d'un nombre rationnel. Par exemple en saisissant en entrée p(1,6) j'aurai en sortie [[1],[6]] car la développement décimal de \frac{1}{6} = 0,166666666...
J'ai déjà créé une fonction qui permet de me donner la longueur de la période et de la pré-période mais je ne vois pas comment créer cette fonction p.

Posté par
mathou57124
re : Python 25-04-20 à 14:37

Merci d'avance !

Posté par
jsvdb
re : Python 25-04-20 à 14:54

Bonjour mathou57124.
Utilise la division euclidienne D = qd + r.
Exemple : division de 87 par 7
la première division donne 87 = 7 * 12 + 3 donc ta partie entière est 12.
seconde division 30 = 7 * 4 + 2 donc ta première décimale est 4
troisième division 20 = 7 * 2 + 6 donc ta seconde décimale est 2
quatrième division 60 = ...
et ainsi de suite ...

Posté par
mathou57124
re : Python 25-04-20 à 15:03

Merci @jsvdb ! En fait ce que je ne comprends pas c'est comment disposer la pré-période dans une liste L1 et la période dans une autre liste en python

Posté par
mathou57124
re : Python 25-04-20 à 15:50

J'ai déjà commencer par écrire :
p(a,b):
     q=floor(a//b)
     r=a-q*b
     liste1=[]
     liste2=[]
Ensuite on doit :
Affecter à q la valeur E(10r/b)
Affecter à r la valeur 10r − db
Mais par exemple dans le cas de 1/6 je ne vois pas comment utiliser la fonction que j'ai déjà créé auparavant qui me donnait la longueur de la pré-période et de la période pour que les chiffres de la pré-période soient dans la liste1 et les chiffres de la période soient dans la liste2

Posté par
kongzi
re : Python 25-04-20 à 15:53

Bonjour

Construisez d'abord l'algorithme

Posté par
kongzi
re : Python 25-04-20 à 15:54

complet, sans vous occuper de la programmation.

Posté par
kongzi
re : Python 25-04-20 à 16:03

Il s'agit d'une boucle jusqu'à l'apparition d'un reste r tel que :

r * 10 = r mod [d]

PS: pour le cas ou d < 10

Posté par
mathou57124
re : Python 25-04-20 à 16:18

D'accord merci ! Cependant j'arrive uniquement à afficher toute la suite mais comment séparer pré-période et période en deux listes distinctes

Posté par
kongzi
re : Python 25-04-20 à 16:29

Si c'est juste une question language python, tu crées deux listes distinctes que tu remplies par la fonction append.

Si c'est une question de conception, et si ta question est comment classer une information avant de savoir si elle relève de pre-periode ou de periode, tu peux garder l'information dans des variables tampons, jusqu'à determiner la destination finale de cette information.

Posté par
mathou57124
re : Python 25-04-20 à 16:59

C'est surtout une question de conception. En fait pour 1/6 par exemple j'ai mon programme python qui m'affiche dans une seule liste [1, 6]. J'avais créé au préalable une fonction floyd(a,b) qui me retourne [1,1] qui sont les longueurs de la pré-période et de la période et j'aimerai utilisé cette fonction dans mon programme qui me permettrait d'isoler la pré-période et la période dans 2 listes distinctes mais je ne vois pas comment faire.

Posté par
kongzi
re : Python 25-04-20 à 22:45

Comme demarche je te suggère de commencer par rédiger les specifications du programme voulu.

Et quand c'est assez complet pour le passer au codage, on passe a ' écriture en python.

**************

Si ton probleme c'est juste que tu veux placer le premier element de la liste dans une variable et l'autre dans une autre variable, tu lis les valeurs liste[0] et liste[1] et tu les mets dans deux variables differentes. Mais personnellement je te suggère de travailler avec une classe qui contient les variables  (ou attributs en jargon programmation objet) a (numerateur) et b (denominateur)  que tu alimentes a la creation de l'instance (methode init) ainsi que d'autres variable preperiode et periode que ton programme (une methode dans cette classe) vont alimenter.

Posté par
alb12
re : Python 26-04-20 à 18:17

salut,
A partir de cette remarque:

jsvdb @ 25-04-2020 à 14:54

Bonjour mathou57124.
Utilise la division euclidienne D = qd + r.
Exemple : division de 87 par 7
la première division donne 87 = 7 * 12 + 3 donc ta partie entière est 12.
seconde division 30 = 7 * 4 + 2 donc ta première décimale est 4
troisième division 20 = 7 * 2 + 6 donc ta seconde décimale est 2
quatrième division 60 = ...
et ainsi de suite ...

Je suppose que ta fonction floyd renvoie [j,k]
Ecris une fonction qui renvoie la liste de taille j+k des quotients. (tu l'as peut etre deja fait)
Ensuite tu decoupes en 2 cette liste en utilisant ta fonction floyd

Posté par
carpediem
re : Python 26-04-20 à 19:14

voir Arithmétique sur Excel

mathou57124 = cmaths12345 ??

Posté par
malou Webmaster
re : Python 26-04-20 à 19:43

tu peux enlever tes points d'interrogation carpediem
je me désinscris , je poste ailleurs, je n'ai pas de réponse, et je reviens ici...
et je traite le même sujet mais en ouvrant un nouveau post...

Posté par
carpediem
re : Python 26-04-20 à 20:06

merci ... et bon courage !!



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !