Création d'une fonction

Fermé
Meste_maiun Messages postés 4 Date d'inscription mercredi 27 avril 2022 Statut Membre Dernière intervention 27 avril 2022 - 27 avril 2022 à 16:49
Meste_maiun Messages postés 4 Date d'inscription mercredi 27 avril 2022 Statut Membre Dernière intervention 27 avril 2022 - 27 avril 2022 à 21:22
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
A voir également:

5 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 avril 2022 à 17:04
Bonjour,

On y verrait plus clair si tu affichais ton code avec les balises de code, mode d'emploi ici:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ça:
for i in range(0, len(lst)):
    lst[i] = float(lst[i])
1
Meste_maiun Messages postés 4 Date d'inscription mercredi 27 avril 2022 Statut Membre Dernière intervention 27 avril 2022
27 avril 2022 à 20:29
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
jordane45 Messages postés 38285 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 novembre 2024 4 697
27 avril 2022 à 20:33
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
jordane45 Messages postés 38285 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 novembre 2024 4 697 > jordane45 Messages postés 38285 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 novembre 2024
27 avril 2022 à 20:36
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 avril 2022 à 20:41
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
27 avril 2022 à 20:41
les bases de Python à revoir ...
0
Meste_maiun Messages postés 4 Date d'inscription mercredi 27 avril 2022 Statut Membre Dernière intervention 27 avril 2022
27 avril 2022 à 20:56
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Meste_maiun Messages postés 4 Date d'inscription mercredi 27 avril 2022 Statut Membre Dernière intervention 27 avril 2022
27 avril 2022 à 21:22
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