Je fais mes devoirs et il me faut utiliser une fonction sum () et une fonction len () pour trouver la moyenne d'une liste de nombres en entrée. Lorsque j'ai essayé d'utiliser sum () pour obtenir la somme de la liste, une erreur s'est produite. TypeError: type (s) d'opérande non pris en charge pour +: '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)
Le problème est que lorsque vous lisez à partir de l'entrée, vous avez une liste de chaînes. Vous pouvez faire quelque chose comme ça comme deuxième ligne:
numlist = [float(x) for x in numlist]
Le problème est que vous avez une liste de chaînes. Vous devez les convertir en nombres entiers avant de calculer la somme. Par exemple:
numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...
Vous ajoutez des chaînes, pas des chiffres, ce que dit votre message d'erreur.
Convertir chaque chaîne en son entier respectif:
numlist = map(int, numlist)
Et ensuite, prenez la moyenne (notez que j'utilise float()
différemment que vous):
arithmetic_mean = float(sum(numlist)) / len(numlist)
Vous voulez utiliser float()
avant de diviser, en tant que float(1/2) = float(0) = 0.0
, ce qui n'est pas ce que vous voulez.
Une alternative serait de simplement les rendre tous float
en premier lieu:
numlist = map(float, numlist)
Convertissez l'entrée de chaîne en liste de valeurs flottantes. Voici le code mis à jour.
numlist = list(map(int,input("Enter a list of number separated by commas: ").split(',')))
l = len(numlist)
s = sum(numlist)
print("mean :",s/l)
Split vous renvoie un tableau de chaînes. Vous devez donc les convertir en nombres entiers avant d'utiliser la fonction sum.
Pour Python 2.7
numlist = map(int,raw_input().split(","))
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:"+ str(m))
Vous pouvez essayer ça.
reduce(lambda x,y:x+y, [float(x) for x in distance])