logo

Fix 'Int'-object is niet subscripteerbaar in Python

In dit artikel zullen we bestuderen hoe we het ‘int’-object kunnen repareren dat niet subscripteerbaar is in Python. Maar laten we eerst begrijpen waarom het gebeurt en wat het betekent.

Wat is ‘Int’ Object is geen subscripteerbare fout?

De fout ‘int’-object kan niet worden gesubscripteerd treedt op wanneer u indexering of segmentering probeert te gebruiken op een geheel getal , een gegevenstype dat deze bewerkingen niet ondersteunt.



Zoals we weten is geheel getal in Python is een data type dat vertegenwoordigt een geheel getal. In tegenstelling tot lijsten of woordenboeken bevatten gehele getallen geen reeks elementen en ondersteunen daarom geen indexering of segmentering.
Als x = 42 (een geheel getal) bijvoorbeeld, en we proberen zoiets te doen als x[0], dan is het een poging om toegang te krijgen tot het eerste element van x alsof x een lijst of een tupel . Omdat gehele getallen geen verzameling items bevatten, is deze bewerking niet geldig en krijgt u een TypeError: ‘int’-object is niet subscripteerbaar.

Voorbeeld

Python3








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

>

>

Uitgang:

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

Waarom treedt er geen subscripteerbare fout op bij het ‘Int’-object?

Het ‘Int’-object is niet subscripteerbaar. Fouten in Python ontstaan ​​als gevolg van specifieke kenmerken van integer (int)-objecten. Hier zijn redenen waarom deze fout optreedt:

  • Onveranderlijkheid van gehele getallen
  • Functie Retourtype komt niet overeen
  • Geen itereerbare structuur

Onveranderlijkheid van gehele getallen

Zoals we weten zijn gehele getallen in Python onveranderlijk, wat betekent dat hun waarden niet kunnen worden gewijzigd nadat ze zijn gemaakt, en dat subscript- of indexeringsbewerkingen van toepassing zijn op veranderlijke reeksen (bijvoorbeeld lijsten, snaren ), waar elementen kunnen worden geopend of gewijzigd met behulp van indices.

Hoe de ontwikkelaarsmodus in Android uit te schakelen

Omdat gehele getallen geen veranderlijke reeksen zijn, is het gebruik van vierkante haakjes voor het subscripteren van resultaten in het ‘Int’-object geen subscripteerbare fout.

Python3




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

>

>

Uitgang:

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>

Functie Retourtype komt niet overeen

Van deze functie wordt verwacht dat deze een lijst of tuple retourneert wanneer de voorwaarde False is, zoals aangegeven door de else-vertakking.

In de else-tak retourneert de functie echter een geheel getal in plaats van een lijst of tupel, wat resulteert in de fout ‘Int’ Object Is Not Subscriptable

Python3




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>]>

>

>

Uitgang:

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

Geen itereerbare structuur

Zoals we weten missen gehele getallen de iterabele structuur die nodig is voor subscripting. Iterabele objecten, zoals lijsten of tekenreeksen, hebben een goed gedefinieerde reeks elementen die toegankelijk zijn met behulp van indices.

Als u probeert vierkante haakjes te gebruiken bij een geheel getal, betekent dit dat u het behandelt alsof het itereerbare eigenschappen heeft, wat ertoe leidt dat het object ‘Int’ geen subscripteerbare fout is.

Python3




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

>

>

Uitgang:

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>

Oplossen van het ‘Int’-object is niet subscripteerbaar in Python

  • Gebruik tekenreeksen of lijsten in plaats van gehele getallen
  • Controleer variabelentypen
  • Beoordelingscodelogica:

Laten we ze in detail bestuderen

tekenreeks naar json java

Gebruik tekenreeksen of lijsten in plaats van gehele getallen

In Python is subscriptnotatie van toepassing op tekenreeksen en lijsten. We kunnen dus een geheel getal naar een string of lijst converteren voordat we de subscriptnotatie gebruiken.

Python3




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

>

>

Uitvoer

4>

Controleer variabelentypen

We moeten ervoor zorgen dat de variabele die we gebruiken van het verwachte type is dat we willen dat het is. Als het een reeks (tekenreeks of lijst) moet zijn, zorg er dan voor dat er niet per ongeluk een geheel getalwaarde aan wordt toegewezen.

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.'>)>

in welk jaar werd de computer uitgevonden

>

>

Uitvoer

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

Codelogica bekijken

Onderzoek uw codelogica om te bepalen of subscriptnotatie echt noodzakelijk is. Als dit niet het geval is, herzie dan de code om te voorkomen dat gehele getallen worden gesubscripteerd.

Python3




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

>

>

Uitvoer

4>

Conclusie

Uit de bovenstaande informatie kunnen we zeggen TypeError : 'int'-object is niet subscripteerbaar. Fout in Python treedt meestal op als gevolg van een type-mismatch waarbij een geheel getal ten onrechte wordt behandeld als een subscripteerbaar object zoals een lijst of tuple. Om dit te voorkomen is het dus van cruciaal belang om datatypen consistent te controleren, vooral als het om dynamische of complexe datastructuren gaat.