El escenario más común en el que los desarrolladores obtienen este error es cuando intenta iterar un número usando un bucle for donde tiende a olvidarse de usar el método range()
, que crea una secuencia de un número para iterar.
Considere el siguiente fragmento de código para aceptar las calificaciones de cada estudiante en una clase.
students=int(input('Please enter the number of students in the class: ')) for number in students: math_grade=(input("Enter student's Maths grade: ")) science_grade=(input("Enter student's Science grade: ")) social_grade=(input("Enter student's Scoial grade: ")) # Output Please enter the number of students in the class: 5 Traceback (most recent call last): File "c:\Projects\Tryouts\listindexerror.py", line 3, in <module> for number in students: TypeError: 'int' object is not iterable
El código anterior es bastante sencillo, lee la entrada sobre el número total de estudiantes en una clase, y para cada estudiante, acepta las calificaciones de las materias.
La forma más fácil en que todos piensan aquí es usar for loop e iterar la cantidad de estudiantes para aceptar la calificación. Si ejecuta el código, Python arrojará un TypeError: 'int' object is not iterable .
En Python, a diferencia de las listas, los números enteros no se pueden iterar directamente, ya que contienen un único valor entero y no contienen el método **' __iter__
' **; es por eso que obtienes un TypeError .
Puede ejecutar el siguiente comando para verificar si un objeto es iterable o no.
print(dir(int)) print(dir(list)) print(dir(dict))
Si observa las capturas de pantalla de salida, int no tiene el ** ''
'
Hay dos formas en que puede resolver el problema, y el primer enfoque es en lugar de usar int, intente usar una lista si tiene sentido, y se puede iterar usando bucles for y while fácilmente.
El segundo enfoque es: si aún desea iterar el objeto int, intente usar el método range()
en el ciclo for, que eventualmente generará una lista de números secuenciales.
students=int(input('Please enter the number of students in the class: ')) for number in range(students): math_grade=(input("Enter student's Maths grade: ")) science_grade=(input("Enter student's Science grade: ")) social_grade=(input("Enter student's Scoial grade: "))
La publicación Python TypeError: 'int' object is not iterable apareció primero en ItsMyCode .