Création d'une fonction

Meste_maiun Messages postés 5 Statut Membre -  
Meste_maiun Messages postés 5 Statut Membre -
Bonjour,

Configuration: Windows / Edge 98.0.1108.55


je fais actuellement une formation Python et j'ai un petit problème

Je dois créer une fonction qui prend comme paramètre une liste de nombres « stringifiés » et renvoie une liste de nombres.

Exemple:

["1", "3", "3.6"] ➞ [1, 3, 3.6]

Mon code
def to_number_list(lst):

lst = ['1.5', '4.22', '3.7', '6', '7']

print ("Liste originale : " + str(lst))

for i in range(0, len(lst)):
lst[i] = float(lst[i])

print ("liste finale : " + str(lst))


Quand je teste mon code sur un compilateur python en ligne, cela me dit que ma variable lst n'est pas nommée

Par contre, si je supprime def to_number_list(lst): (la définition de la fonction), j'obtiens le résultat attendu

Mais bien sûr pour pouvoir passer le test, je ne peux absolument pas supprimer cette partie du code ;-)

Merci d'avance pour votre aide
Cordialement

5 réponses

  1. Meste_maiun Messages postés 5 Statut Membre
     
    Merci pour la réponse et la suggestion

    J'ai du m'y reprendre à deux fois ;-)

    def to_number_list(lst):
    
    lst = ['1.5', '4.22', '3.7', '6', '7']
    
    print ("Liste originale : " + str(lst))
    
    
    for i in range(0, len(lst)):
    lst[i] = float(lst[i])
    
    
    print ("liste finale : " + str(lst)) 
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bonjour,

      Jamais deux sans trois ....
      L'indentation en python est primordial...
      Je t'invite donc à reposter ton code en utilisant les balises de code ET en mettant l'indentation à celui-ci.
      Et... Si tu n'en as pas.. normal que ton script ne fonctionne pas..
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Enfin, ton programme devrait plutôt ressembler à ça
        def to_number_list(lst):
          for i in range(0, len(lst)):
            lst[i] = float(lst[i])
        
          print ("liste finale : " + str(lst))
          
        lst = ['1.5', '4.22', '3.7', '6', '7']
        print ("Liste originale : " + str(lst))
        to_number_list(lst)
        
        0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    ok mais il manque les indentations, primordiales en Python
    J'imagine que c'est comme ça ? :

    def to_number_list(lst):
    
        lst = ['1.5', '4.22', '3.7', '6', '7']
        print ("Liste originale : " + str(lst))
    
        for i in range(0, len(lst)): lst[i] = float(lst[i])
        print ("liste finale : " + str(lst))
    


    je comprends que ça ne marche pas : tout le code est dans la fonction
    donc, évidemment, si tu enlèves la ligne def ...., (et les indentations) ca marche
    0
    1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
       
      les bases de Python à revoir ...
      0
  3. Meste_maiun Messages postés 5 Statut Membre
     
    Bonsoir

    Merci de vos réponses

    Je ne connaissais pas le python jusqu'à hier ;-)))

    Et j'ai jusqu'au 12 mai pour en connaître les bases pour une pré-sélection à une formation...

    ça marche dans le compilateur en ligne espérons que cela fonctionnera sur le site de test (Edabit)

    Merci pour vos conseils
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Meste_maiun Messages postés 5 Statut Membre
     
    Après vérification, cela fonctionne à merveille sur un compilateur externe (https://www.onlinegdb.com/)
    Liste originale : ['1.5', '4.22', '3.7', '6.35', '7.62']
    liste finale : [1.5, 4.22, 3.7, 6.35, 7.62]


    Mais je n'ai pas le résultat attendu avec le même code sur Edabit même en mettant les deux dernier nombre non entier

    Liste originale : ['1.5', '4.22', '3.7', '6.35', '7.62']
    liste finale : [1.5, 4.22, 3.7, 6.35, 7.62]
    finale de la liste : [1.0, 2.0]
    ÉCHEC : Aucun ne doit être égal à [1, 2]
    ERREUR : Retraçage :
    dans <module>
    Fichier « ./frameworks/python/cw-2.py », ligne 28, dans assert_equals
    expect(actual == expected, message, allow_raise)
    Fichier « ./frameworks/python/cw-2.py », ligne 18, dans expect
    raise AssertException(message)
    cw-2. AssertException : Aucun ne doit être égal à [1, 2]


    dans le résultat, j'ai la ligne en gras qui s'affiche en plus et elle semble tout faire planter

    Merci
    0