Inscription / Connexion Nouveau Sujet
Niveau Maths sup
Partager :

Python - Problème de liste !

Posté par
alb1du29
12-04-17 à 21:20

Bonsoir, j'ai réalisé ce programme dans le bus de renvoyer une liste avec le nombre de décimales communes entre la liste "liste_valeurs" et racine de 2.
Mais lorsque je rentre ['1.3','1.40','1.41'], il m'est indiqué une erreur de syntaxe donc j'enlève les guillemets en trop, ce qui donne fonction_compter([1.3,1.40,1.41]) mais à ce moment là, il y a
"Traceback (most recent call last):
File "<console>", line 1, in <module>
, line 58, in fonction_compter
while (str(n)[i]==racine[i]) and (i<100):
IndexError: string index out of range"


1
2
3
4
5
6
7
8
9
10
11
12
13
14
def fonction_compter(liste_nombres):
    resultat=[]
    racine=str(Decimal('2').sqrt())
    for n in liste_nombres:
        if len(str(n))>2:
            compteur=0
            i=0
            while (str(n)[i]==racine[i]) and  (i<100):
                compteur=compteur +1
                i=i+1
            resultat.append(compteur)
        else:
            resultat.append(0)
    return(resultat)

Posté par
fm_31
re : Python - Problème de liste ! 12-04-17 à 21:33

Bonjour ,

je pense que c'est   and  (i<100):   qui provoque le débordement .

Cordialement

Posté par
bbomaths
re : Python - Problème de liste ! 12-04-17 à 21:49

bonsoir.

et si n = 1000 ?

Posté par
verdurin
re : Python - Problème de liste ! 12-04-17 à 23:07

Je crois que c'est la suite de Python-zéro de fonctions

Si tu regardes bien, il est très vraisemblable que str(n) aie une longueur strictement inférieure à 100.

D'où le message

IndexError: string index out of range

Posté par
alb1du29
re : Python - Problème de liste ! 12-04-17 à 23:15

Bonsoir, merci  à vous deux pour vos réponses.
fm_31 : oui je pense aussi que c'est sur cette ligne la qu'il y a une erreur, c'est pourquoi j'ai essayé avec d'autres valeurs supérieures à 100, sauf que ça ne fonctionne pas. Mais c'est de ma faute j'ai oublié de vous dire que j'avais mis un "getcontext().prec=100" en début de programme... sinon je ne vois pas comment remédier au problème...

bbomaths : si n=100 je ne vois pas trop ce que cela peut donner...

Posté par
bbomaths
re : Python - Problème de liste ! 13-04-17 à 04:13

Bonjour.

un exemple

# *** import ****************
# module specifique pour le systeme
import sys
# module pour le système d'exploitation
import os
# module mathematique
import math

# *** globals ***************

Nref = "%18.16f" % (math.sqrt(2))

#Nref = "%18.16f" % (math.pi)

_ , p_dec_nref = Nref.split(".")

# *** def *******************

def compter(arg_liste) :
   l_compteur = []

   for nombre in (arg_liste) :
      # un separateur present ?
      if "." not in nombre :
         # non : format du nombre : xxxx
         l_compteur.append(0)
      else :

         # oui : separation des parties entiere et decimale
         p_ent, p_dec = nombre.split(".")

         # une partie decimale presente ?
         if p_dec == "" :
            # non : format du nombre : xxxx.
            l_compteur.append(0)
         else :
            # oui : format du nombre : xxxx.yyy
            compteur = 0

            # comparaison des parties decimales
            for i in range(min(len(p_dec), len(p_dec_nref))) :

               if p_dec[i] == p_dec_nref[i] :
                  compteur += 1
               else :
                  break

            l_compteur.append(compteur)
   return l_compteur

# *** main ******************

# effacement de l'ecran
os.system('cls')
print "\n"

l_nombre = []

n = int(input(" entrez le nombre de nombres  : "))
print "\n"

for i in range(n) :
   l_nombre.append(raw_input(" entrez un nombre decimal x.y : "))

print "\n"
l_compte = compter(l_nombre)
print l_compte

Posté par
alb1du29
re : Python - Problème de liste ! 13-04-17 à 11:44

Bonjour,
bbomaths : merci c'est très gentil d'avoir réalisé ce programme malheureusement il y a plein de fonction que je ne connais pas...

Sinon j'ai un peu modifié mon programme et il ne m'affiche plus de message d'erreur.. juste la mauvaise réponse ! En effet, lorsque je rentre ma liste [1.3, 1.40, 1.41] il me renvoie une liste de 50 zéros...

def fonction_compter(liste_nombres):
    resultat=[]
    racine=str(Decimal('2').sqrt())
    for n in range(0,50):
        if len(str(n))>2:
            compteur=0
            i=0
            while (str(n)[i]==racine[i]) and  (i<50):
                compteur=compteur +1
                i=i+1
            resultat.append(compteur)
        else:
            resultat.append(0)
    return(resultat)

Posté par
bbomaths
re : Python - Problème de liste ! 13-04-17 à 14:21

Vous déclarez une fonction fonction_compter(liste_nombres) avec un paramètre qui n'est pas utilisé...

Posté par
bbomaths
re : Python - Problème de liste ! 13-04-17 à 14:39

Sans arrière-pensée de ma part, quel est votre niveau en programmation ? En Python ?

Pour les novices en Python, je conseille le livre "An Introduction to Python and Computer Programming [Zhang]".

Posté par
fm_31
re : Python - Problème de liste ! 13-04-17 à 14:50

Dans la fonction  fonction_compter (liste_nombres) :  le paramètre  liste_nombres  n'est pas utilisé



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