logo

Correction de l'objet 'Int' n'est pas inscriptible en Python

Dans cet article, nous étudierons comment corriger un objet « int » qui n'est pas inscriptible en Python. Mais avant cela, comprenons pourquoi cela se produit et ce que cela signifie.

Qu'est-ce que l'erreur « Int » L'objet n'est pas inscriptible ?

L'erreur L'objet 'int' n'est pas inscriptible se produit lorsque vous tentez d'utiliser l'indexation ou le découpage sur un entier , un type de données qui ne prend pas en charge ces opérations.



Comme nous connaissons un entier dans Python est un Type de données cela représente un nombre entier. Contrairement aux listes ou aux dictionnaires, les entiers ne contiennent pas de séquence d'éléments et ne prennent donc pas en charge l'indexation ou le découpage.
Par exemple, si x = 42 (un entier) et que nous essayons de faire quelque chose comme x[0], c'est une tentative d'accéder au premier élément de x comme si x était un liste ou un tuple . Étant donné que les entiers ne contiennent pas de collection d'éléments, cette opération n'est pas valide et vous obtenez une TypeError : l'objet 'int' n'est pas inscriptible.

Exemple

Python3








# Example causing 'int' object is not subscriptable error> x>=> 42> # Attempting to use subscript notation on an integer> print>(x[>0>])>

>

>

Sortir:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 4, in   print(number[0]) TypeError: 'int' object is not subscriptable>

Pourquoi l’erreur « Int » n’est-elle pas inscriptible se produit-elle ?

L'erreur « Int » n'est pas indicable en Python en raison des caractéristiques spécifiques des objets entiers (int). Voici les raisons pour lesquelles cette erreur se produit :

  • Immuabilité des entiers
  • Incompatibilité du type de retour de fonction
  • Aucune structure itérable

Immuabilité des entiers

Comme nous savons que les entiers en Python sont immuables, ce qui signifie que leurs valeurs ne peuvent pas être modifiées après la création et que les opérations d'indice ou d'indexation sont applicables aux séquences mutables (par exemple, les listes, cordes ), où les éléments peuvent être consultés ou modifiés à l'aide d'index.

git ajouter --all

Étant donné que les entiers ne sont pas des séquences mutables, tenter d’utiliser des crochets pour indicer les résultats dans l’objet « Int » n’est pas une erreur d’indice.

Python3




# Example triggering 'Int' object is not subscriptable error> num>=> 42> value>=> num[>0>]># Error: 'Int' object is not subscriptable>

>

>

Sortir:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   value = num[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable>

Incompatibilité du type de retour de fonction

Dans cette fonction, on s'attend à ce qu'elle renvoie une liste ou un tuple lorsque la condition est False, comme indiqué par la branche else.

Cependant, dans la branche else, la fonction renvoie un entier au lieu d'une liste ou d'un tuple, ce qui entraîne une erreur « Int » L'objet n'est pas inscriptible.

Python3

méthode de comparaison java




def> get_data(condition):> >'''> >This function is expected to return a list or tuple,> >but under certain conditions, it returns an integer.> >'''> >if> condition:> >return> [>1>,>2>,>3>]># Returns a list> >else>:> >return> 42> # Returns an integer> > # Function call with a condition that leads to an integer being returned> result>=> get_data(>False>)> > # Attempting to index the result, which is an integer in this case> first_element>=> result[>0>]>

>

>

Sortir:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 15, in   first_element = result[0] TypeError: 'int' object is not subscriptable>

Aucune structure itérable

Comme nous le savons, les entiers n'ont pas la structure itérable requise pour l'indice. Les objets itérables, tels que les listes ou les chaînes, ont une séquence bien définie d'éléments accessibles à l'aide d'index.

Tenter d'utiliser des crochets sur un entier implique de le traiter comme s'il avait des propriétés itérables, ce qui entraîne l'erreur « Int » de l'objet n'est pas indicable.

Python3




# Example demonstrating misinterpretation of syntax> integer_value>=> 123> value>=> integer_value[>0>]>

>

>

Sortir:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   value = integer_value[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable>

Résoudre l'objet 'Int' n'est pas inscriptible en Python

  • Utilisez des chaînes ou des listes au lieu d'entiers
  • Vérifier les types de variables
  • Examiner la logique du code :

Étudions-les en détail

Utilisez des chaînes ou des listes au lieu d'entiers

En Python, la notation en indice s'applique aux chaînes et aux listes. Nous pouvons donc convertir un entier en chaîne ou en liste avant d'utiliser la notation en indice.

Python3




# Converting integer to string and using subscript notation> number>=> 42> number_str>=> str>(number)> print>(number_str[>0>])>

films123 à

>

>

Sortir

4>

Vérifier les types de variables

Nous devons nous assurer que la variable que nous utilisons est du type attendu que nous souhaitons. S’il s’agit d’une séquence (chaîne ou liste), assurez-vous qu’une valeur entière ne lui est pas attribuée par erreur.

Python3




# Checking variable type before using subscript notation> number>=> 42> if> isinstance>(number, (>str>,>list>)):> >print>(number[>0>])> else>:> >print>(> >f>'Error: Variable type '{type(number).__name__}' is not subscriptable.'>)>

>

>

Sortir

Error: Variable type 'int' is not subscriptable.>

Examiner la logique du code

Examinez la logique de votre code pour déterminer si la notation en indice est véritablement nécessaire. Sinon, révisez le code pour éviter d'indiquer des entiers.

Python3




# Reviewing code logic to avoid subscripting integers> number>=> 42> number_str>=> str>(number)> print>(number_str[>0>])>

>

>

Sortir

4>

Conclusion

D'après les informations ci-dessus, nous pouvons dire Erreur-type : L'erreur 'int' object is not indicable en Python se produit généralement en raison d'une incompatibilité de type où un entier est traité par erreur comme un objet indicable comme une liste ou un tuple. Afin d’éviter cela, il est crucial de vérifier systématiquement les types de données, en particulier lorsqu’il s’agit de structures de données dynamiques ou complexes.