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 :

Simplification de racine carré [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Par défaut Simplification de racine carré
    Salut !

    Je me considère encore comme un petit débutant en Python, et comme l'indique le titre, je souhaiterais pouvoir réaliser une simplification de racine carré en Python.

    J'ai déjà fait un programme qui fonctionne plus ou moins

    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
    from math import *
     
    carre=[4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]
     
    nb=int(input("Entrez un nombre entier à mettre sous racine : "))
     
    sort=[] #liste des carrés qui vont être sorti de la racine.
     
    i=0 #compteur pour avancer dans la liste
    n=carre[i]
    while n < int(sqrt(nb)): #inutile d'aller au delà de la racine du nombre de départ dans la liste de carrés...
        if nb%carre[i] == 0 :
            sort.append(carre[i])
            nb//=carre[i]
        else :
            i+=1
     
    ext=1
    for loop in range (len(sort)):
        ext*=int(sqrt(sort[loop]))
     
    print(ext,"√(",nb,")")

    Bon on dirait que la balise CODE du site ne reconnaît pas mon symbole... A la ligne 22 c'est un simple symbole de racine carré ^^


    Exemples de résultats :


    Une seule valeur dans la liste "sort[]"
    Nom : dc4f1b774462e64e37b3bc5d58ce1205.png
Affichages : 4147
Taille : 9,0 Ko
    > Correct


    Deux valeurs dans le liste "sort[]"
    Nom : 4f8d1aac6d440de5be247057b81ec997.png
Affichages : 12286
Taille : 8,9 Ko
    > Correct


    Petit nombre
    Nom : 6f131da6189e49604a6a7a8b82464d67.png
Affichages : 4424
Taille : 8,5 Ko
    > Incorrect... Ça fait 2.


    Grand nombre
    Nom : 4faad5c70188e1c36ed285ce3d94851b.png
Affichages : 8049
Taille : 12,0 Ko
    > Erreur ? La liste n'est pourtant pas dépassée, et il y a bien une simplification possible : ça fait 2√(22)


    J'utilise ce site pour voir les vrais résultats que je devrais avoir :
    http://www.dcode.fr/racine-carree

    Mais j'avoue que là je bloque....
    Si vous pouviez m'aider à améliorer mon programme de façon à ce qu'il fonctionne correctement !


    Je vous remercie par avance !

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par Keyller76 Voir le message
    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
    from math import *
     
    carre=[4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]
     
    nb=int(input("Entrez un nombre entier à mettre sous racine : "))
     
    sort=[] #liste des carrés qui vont être sorti de la racine.
     
    i=0 #compteur pour avancer dans la liste
    n=carre[i]
    while n < int(sqrt(nb)): #inutile d'aller au delà de la racine du nombre de départ dans la liste de carrés...
        if nb%carre[i] == 0 :
            sort.append(carre[i])
            nb//=carre[i]
        else :
            i+=1
     
    ext=1
    for loop in range (len(sort)):
        ext*=int(sqrt(sort[loop]))
     
    print(ext,"√(",nb,")")
    Bonjour,
    Il semble qu'il y ait un petit problème dans les conditions du "while":
    Il semble suffire de remplacer cette ligne par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (n <= nb) and (i < len(carre)):
    Clodion

    PS: sqrt(12) < 4…

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Par défaut
    Merci pour ta réponse !


    En fait c'est un peu stupide de ma part, j'ai du me fail avec mes copier/coller parce qu'il y a quelque chose que j'avais modifié avant de poster, dans le While justement.

    Voici le code :

    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
    from math import *
    carre=[4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]
    nb=int(input("Entrez un nombre entier à mettre sous racine : "))
    sort=[] #liste des carrés qui vont être sorti de la racine.
     
    i=0 #compteur pour avancer dans la liste
    n=carre[i]
    while n < nb: #inutile d'aller au delà du nombre de départ dans la liste de carrés...
    	if nb%carre[i] == 0 :
    		sort.append(carre[i])
    		nb//=carre[i]
    	else :
    		i+=1
     
    ext=1
    for loop in range (len(sort)):
    	ext*=int(sqrt(sort[loop]))
     
    print(ext,"√(",nb,")")


    Mais peu importe, je viens de tester à nouveau, avec ta proposition, et effectivement ça fonctionne mieux, merci !
    Je pense avoir testé un certain nombre de... nombres, et je ne rencontre pour le moment pas de message d'erreur ou de résultats incorrects. Super donc !

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. la racine carré d'un nombre
    Par aziz jim dans le forum C++
    Réponses: 4
    Dernier message: 07/08/2006, 14h31
  2. [VB]Math : racine carrée et quotient
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 20/04/2006, 17h08
  3. Utilisation de la fonction racine carré
    Par derf_r dans le forum Access
    Réponses: 3
    Dernier message: 23/11/2005, 16h30
  4. [Astuce] Approximation de racines carrées
    Par Smortex dans le forum Assembleur
    Réponses: 16
    Dernier message: 18/05/2004, 06h17
  5. Racine carrée
    Par SteelBox dans le forum Mathématiques
    Réponses: 5
    Dernier message: 23/11/2002, 17h15

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