logo

Popravek »Int« predmeta ni mogoče vpisati v Python

V tem članku bomo preučili, kako popraviti objekt 'int', ki ga ni mogoče vpisati v Python. Pred tem pa poglejmo, zakaj se pojavi in ​​kaj pomeni.

Kaj je napaka »Int« Object Is Not Subscriptable?

Napaka objekta 'int' ni mogoče vpisati se pojavi, ko poskušate uporabiti indeksiranje ali rezanje na celo število , tip podatkov, ki ne podpira teh operacij.



Kot vemo, celo število v Python je tip podatkov ki predstavlja celo število. Za razliko od seznamov ali slovarjev cela števila ne vsebujejo zaporedja elementov in zato ne podpirajo indeksiranja ali rezanja.
Na primer, če je x = 42 (celo število) in poskušamo narediti nekaj podobnega x[0], je to poskus dostopa do prvega elementa x, kot da bi bil x seznam ali a tuple . Ker cela števila ne vsebujejo zbirke elementov, ta operacija ni veljavna in dobite TypeError: objekta 'int' ni mogoče vpisati.

Primer

Python3








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

>

>

Izhod:

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

Zakaj se pojavi napaka »Int« Object Is Not Subscriptable?

Napaka 'Int' object is not subscriptable se v Pythonu pojavi zaradi posebnih značilnosti celih (int) objektov. Tukaj so razlogi, zakaj pride do te napake:

  • Nespremenljivost celih števil
  • Neujemanje vrnjenega tipa funkcije
  • Brez ponovljive strukture

Nespremenljivost celih števil

Ker vemo, da so cela števila v Pythonu nespremenljiva, kar pomeni, da njihovih vrednosti po ustvarjanju ni mogoče spremeniti, operacije vpisovanja ali indeksiranja pa veljajo za spremenljiva zaporedja (npr. sezname, strune ), kjer je do elementov mogoče dostopati ali jih spreminjati z uporabo indeksov.

modeli strojnega učenja

Ker cela števila niso spremenljiva zaporedja, poskus uporabe oglatih oklepajev za vpisovanje rezultatov v objekt 'Int' ni napaka, ki jo je mogoče vpisati.

Python3




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

>

>

Izhod:

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>

Neujemanje vrnjenega tipa funkcije

Pričakuje se, da bo ta funkcija vrnila seznam ali torko, ko je pogoj False, kot kaže veja else.

Vendar v veji else funkcija vrne celo število namesto seznama ali tuple, kar ima za posledico napako »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>]>

>

>

Izhod:

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

Brez ponovljive strukture

Kot vemo, cela števila nimajo ponovljive strukture, ki je potrebna za indeksiranje. Ponovljivi objekti, kot so seznami ali nizi, imajo dobro definirano zaporedje elementov, do katerih je mogoče dostopati z uporabo indeksov.

Poskus uporabe oglatih oklepajev na celem številu pomeni, da ga obravnavamo, kot da ima lastnosti, ki jih je mogoče ponavljati, zaradi česar objekt 'Int' ni napaka, ki jo je mogoče vpisati.

Python3




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

>

logično v niz
>

Izhod:

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>

Rešite, da predmeta »Int« ni mogoče vpisati v Python

  • Namesto celih števil uporabite nize ali sezname
  • Preverite vrste spremenljivk
  • Preglejte logiko kode:

Preučimo jih podrobno

Namesto celih števil uporabite nize ali sezname

V Pythonu se indeksni zapis uporablja za nize in sezname. Tako lahko pretvorimo celo število v niz ali seznam, preden uporabimo indeksni zapis.

Python3




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

>

>

Izhod

4>

Preverite vrste spremenljivk

Zagotoviti moramo, da je spremenljivka, ki jo uporabljamo, pričakovanega tipa, za katerega želimo. Če naj bi bilo zaporedje (niz ali seznam), se prepričajte, da mu ni pomotoma dodeljena celoštevilska vrednost.

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

>

>

Izhod

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

Preglejte logiko kode

Preglejte logiko svoje kode, da ugotovite, ali je indeksni zapis resnično potreben. Če ne, popravite kodo, da se izognete vpisovanju celih števil.

Python3




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

>

izberite sql iz več tabel

>

Izhod

4>

Zaključek

Iz zgornjih informacij lahko rečemo TypeError : 'int' object is not inscriptable napaka v Pythonu se običajno zgodi zaradi neujemanja tipa, kjer je celo število pomotoma obravnavano kot predmet, ki ga je mogoče vpisati, kot je seznam ali tuple. Da bi to preprečili, je ključnega pomena, da dosledno preverjate tipe podatkov, zlasti ko imate opravka z dinamičnimi ali kompleksnimi strukturami podatkov.