L'objet n'est pas subscriptable
Je vais avoir un peu de mal avec du code python (des choses simples).
Il est arrivé à un point où je suis en espérant que si je clique sur exécuter suffisamment de fois, il pourrait travailler...
Voici le code:
Data = [1, 2, 3, 4, 5]
Frequency = [1, 2, 3, 3, 1]
def mode(data1, frequency1):
mode = [0]
count = 0
while count != len(frequency1):
if frequency1[count] > mode[0]:
mode = data1[count]
elif frequency1[count] == mode:
mode = [mode, data1[count]]
count +=1
return mode
mode = mode(Data, Frequency)
print(mode)
Il retourne :
if Frequency[0] > mode[0]:
TypeError: 'int' object is not subscriptable
J'ai eu un coup d'oeil à une autre question & réponse, mais il regarda au-delà de moi.
Où vais-je tort!
Edit: je sais, il existe des modules vous pouvez importer pour trouver la moyenne, mais je veux le faire sans avoir à les importer quoi que ce soit.
Edit: tout le code qui est maintenant affiché. Si je N'ai pas le mode variable d'une liste c'est bien jusqu'à il y a deux modes.
Droit...
Je ne comprends pas ce que votre code est en train de faire. Qu'attendez-vous
Comme une note de côté, une boucle de la forme
Vous avez également une fonction nommée
mode
est un int
... pas certains de la liste de... ne pas utiliser des noms de variables à des fins différentes, déclarer une variable différente avec un nom différent pour chaque utilisation.Je ne comprends pas ce que votre code est en train de faire. Qu'attendez-vous
mode[0]
à être dans le premier endroit que vous avez besoin de convertir un nombre entier? Pourquoi êtes-vous le stockage de la mode précédent et le nouveau ensemble dans une liste comme mode
?Comme une note de côté, une boucle de la forme
count = 0
, while count != len(frequency1):
frequency1[count]
peut (et doit) être remplacé par for frequency in frequency1:
. Si vous avez besoin d' count
pour une raison quelconque, l'utilisation for count, frequency in enumerate(frequency1):
. Mais si vous avez uniquement besoin count
à l'index une autre liste au même rythme, ne pas le faire; il suffit de ne for frequency, data in zip(frequency1, data1):
. Cependant vous le faites, se débarrasser de ce manuel compteur de boucle de gestion élimine beaucoup de facile à faire les éventuels bugs.Vous avez également une fonction nommée
mode
et une variable nommée mode
. Quand est qui qui? (La langue a une définition stricte, mais c'est un fou manière d'écrire du code.)OriginalL'auteur Reubens | 2013-10-22
Vous devez vous connecter pour publier un commentaire.
Découvrez votre
int(mode[0])
. Vous êtes essentiellement à dire, obtenir l'0e élément de... zéro. Peut-être vous voulez juste perdre de l'indice? Ou de modifier le type de mode?OriginalL'auteur BlackVegetable