Création d'une fonction

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. 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
    1. 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
      1. 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
        1. les bases de Python à revoir ...
      2. 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)) 
        1. Modérateur
          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..
        2. Modérateur
          @jordane45Enfin, 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)