Comment puis-je utiliser la fonction sum() pour une liste en Python?
Je suis en train de faire mes devoirs, et il requirers moi d'utiliser une somme () et len () de fonctions pour trouver la moyenne d'un nombre d'entrée de la liste, quand j'ai essayé d'utiliser la somme () pour obtenir la somme de la liste, j'ai eu une erreur TypeError: unsupported operand type(s) for +: 'int' et 'str'. Voici mon code:
numlist = input("Enter a list of number separated by commas: ")
numlist = numlist.split(",")
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:",m)
quel est votre avis?
s = sum(map(int, numlist))
OriginalL'auteur user1275189 | 2012-03-17
Vous devez vous connecter pour publier un commentaire.
Le problème est que lorsque vous lisez à partir de l'entrée, vous avez une liste de chaînes de caractères. Vous pourriez faire quelque chose comme ça comme votre deuxième ligne:
OriginalL'auteur Zenon
Le problème, c'est que vous avez une liste de chaînes de caractères. Vous avez besoin de les convertir en nombres entiers avant de calculer la somme. Par exemple:
OriginalL'auteur Justin Ethier
Vous en ajoutant des cordes, pas des nombres, qui est ce que votre message d'erreur, c'est dire.
Convertir chaque chaîne dans son entier:
Puis prendre la moyenne (notez que j'utilise
float()
différemment de ce que vous faites):Vous souhaitez utiliser
float()
avant de le diviser, commefloat(1/2) = float(0) = 0.0
, ce qui n'est pas ce que vous voulez.Une autre solution serait de simplement les faire tous
float
en premier lieu:Hmm, qui pourrait aussi être le cas.
OriginalL'auteur Blender
Split vous renvoie un tableau de chaînes de caractères, donc vous devez le convertir en entiers avant d'utiliser la fonction somme.
OriginalL'auteur franka
Vous pouvez essayer cette.
OriginalL'auteur ShanmugavelSubramani
Convertir la chaîne d'entrée à une liste de valeurs flottantes. Voici le code mis à jour.
OriginalL'auteur fireblaze
Pour Python 2.7
OriginalL'auteur Pramodya Abeysinghe