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 :

problème de typage


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut problème de typage
    Bonsoir messieurs,

    Voilà quelques mois que je n'ai pas touché à Python, je m'y remets, et je suis en train de m'embrouiller avec un problème de typage...

    Pourriez-vous m'indiquer mon erreur ?

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    from numpy import std
     
    hs_histo_2452 = [24964.37, 24710.6, 24500.61, 24700.3, 24222.58, 24027.18, 23693.02, 23214.46, 23637.39, 23605.71, 23524.02, 22896.14, 23023.86, 23054.68, 22877.25, 23166.22, 23007.99, 23249.8]
     
    # calcul des espérances
     
    e_hs_2452 = []
    e = 0.
    i = 1
     
    for i in hs_histo_2452:
        e = hs_histo_2452[i]-hs_histo_2452[i-1]
        e_hs_2452 = e_hs_2452.append(e)
        i+=1
     
    # calcul de la moyenne
     
    somme = 0.
    mu = 0.
    j = 0
     
    for j in e_hs_2452:
        somme = somme + e_hs_2452[j]
        j+=1
     
    mu = somme / j 
     
    print("mu = ", mu)
     
    # calcul vol histo
     
    # calcul des perfs
     
    perf_hs_2452 = []
    perf_int = 0.
    perf = 0.
    k = 1
    vol_histo = 0.
     
    for k in hs_histo_2452:
        perf_int = hs_histo_2452[k]-hs_histo_2452[k-1]
        perf = perf_int/hs_histo_2452[k-1]
        perf_hs_2452 = perf_hs_2452.append(perf)
        k+=1
     
    vol_histo = numpy.std(perf_hs_2452)
     
    print("sigma = ", vol_histo)
    Je comprends pas parce que si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e = float(hs_histo_2452[i])-float(hs_histo_2452[i-1])
    Ça ne fonctionne pas non plus.

    De plus, j'ai voulu marquer le typage en float en mettant par exemple

    Alors que pour moi Python est censé comprendre que 24700.3, par exemple, est un float.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Matthieu_12 Voir le message
    Pourriez-vous m'indiquer mon erreur?
    L'important est le message d'erreur où Python indique ce qu'il ne lui plaît pas, la ligne et l'instruction concernée.

    Ca évite d'avoir à lire votre code et y constatant des constructions particulièrement farfelues, vous suggérer de réviser un peu votre Python avant de vouloir faire des choses sérieuses avec.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut
    Bonsoir Wiztricks, je viens d'éditer mon premier message !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Matthieu_12 Voir le message
    Bonsoir Wiztricks, je viens d'éditer mon premier message !
    Vous ne donnez pas le message d'erreur remonté par Python...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut
    hs10.txt contient des données telles que :

    '21010.01\n', '20783.86\n', '20887.4\n', '20917.83\n', '21365.23\n', '21277.28\n', '21491.62\n', '21424.79\n', '21478.72\n', '21549.28\n', '21380.99\n', '21406.86\n', '21217.86\n', '21568.73\n', '21680.08\n', '21387.96\n', '21562.26\n', '21265.31\n'

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    from numpy import std
     
    hs_histo_2452 = []
     
    f = open('hs10.txt', 'r')
     
    for line in f:
        z = line.replace("\n","")
        hs_histo_2452.append(z)
    f.close()
     
    # calcul des espérances
     
    e_hs_2452 = []
    e = 0
    i = 1
     
    for i in hs_histo_2452:
        e = float(hs_histo_2452[i])-float(hs_histo_2452[i-1])
        e_clear = round(e, 2)
        e_hs_2452.append(e_clear)
        i+=1
     
    # calcul de la moyenne
     
    somme = 0
    mu = 0
    j = 0
     
    for j in e_hs_2452:
        somme = somme + e_hs_2452[j]
        j+=1
     
    mu = somme / j 
     
    print("mu = ", mu)
     
    # calcul vol histo
     
    # calcul des perfs
     
    perf_hs_2452 = []
    perf_int = 0
    perf = 0
    k = 1
    vol_histo = 0
     
    for k in hs_histo_2452:
        perf_int = float(hs_histo_2452[k])-float(hs_histo_2452[k-1])
        perf = perf_int/hs_histo_2452[k-1]
        perf_hs_2452 = perf_hs_2452.append(perf)
        k+=1
     
    vol_histo = numpy.std(perf_hs_2452)
     
    print("sigma = ", vol_histo)
    L'erreur renvoyée est :

    TypeError: list indices must be integers or slices, not str

    Pourtant mon indice i est initialisé à 1, donc un entier

    J'ai modifié mes strings initiaux tels que l'élément 1 de la liste est passé de '20783.86\n' à '20783.86'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z = line.replace("\n","")
    Et cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e = float(hs_histo_2452[i])-float(hs_histo_2452[i-1])
    est censée faire :

    e = conversion en float de l'élément 1 (le string '20783.86') de la liste hs_histo_2452, soit 20783.86, MOINS celui d'avant (hs_histo_2452[i-1] étant '21010.01', soit en float 21010.01)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Enfin!

    Citation Envoyé par Matthieu_12 Voir le message
    L'erreur renvoyée est :

    TypeError: list indices must be integers or slices, not str

    Pourtant mon indice i est initialisé à 1, donc un entier
    Relisez le code concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in hs_histo_2452:
        e = hs_histo_2452[i]-hs_histo_2452[i-1]
        e_hs_2452 = e_hs_2452.append(e)
        i+=1
    Vous avez oublié qu'en écrivant "for i in ..." Python va itérer avec les objets qu'il trouve dans la liste hs_histo_2452... qui sont des flottants d'où le message d'erreur.

    Il faudrait plutôt écrire for i in range(len(hs_histo_2452))...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/02/2007, 17h56
  2. problème de typage
    Par sissi25 dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 10/01/2007, 12h59
  3. [Typage] Problème avec typage de variables
    Par elitemedia dans le forum Langage
    Réponses: 2
    Dernier message: 17/11/2006, 02h18
  4. [Tableaux] Problème de typage sur un float
    Par Lomu dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 11h47
  5. [SQL2005] problèmes de typage de colonne en XML
    Par titouc330 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/10/2006, 12h52

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