TypeError: obiectul ‘function’ nu este subscriptibil – Python (Programare, Python)

HorrorBoy Jay a intrebat.

Am încercat să rezolv o temă cu acest cod:

bank_holiday= [1, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 2] #gives the list of bank holidays in each month

def bank_holiday(month):
   month -= 1#Takes away the numbers from the months, as months start at 1 (January) not at 0. There is no 0 month.
   print(bank_holiday[month])

bank_holiday(int(input("Which month would you like to check out: ")))

Dar când o execut, primesc eroarea:

TypeError: 'function' object is not subscriptable

Nu înțeleg de unde vine asta…

Comentarii

  • Deci……. aveți o întrebare? –  > Por EdChum.
  • Trebuie să știu ce este în neregulă cu codul meu. –  > Por HorrorBoy Jay.
  • Este atât de simplu, aveți 2 obiecte cu același nume și când spuneți: bank_holiday[month] python crede că vreți să vă executați funcția și a primit ERROR. doar redenumiți matricea dvs. în bank_holidays <— adăugați un ‘s’ la sfârșit! –  > Por Peyman Majidi.
3 răspunsuri
unutbu

Aveți două obiecte, ambele numite bank_holiday — unul o listă și unul o funcție. Dezambiguizați-le pe cele două.

bank_holiday[month] generează o eroare deoarece Python crede că bank_holiday se referă la funcție (ultimul obiect legat la numele bank_holiday), în timp ce dumneavoastră probabil intenționați să vă referiți la listă.

Comentarii

  • Se poate întâmpla, de asemenea, să treceți o referință de funcție ca parametru la apelarea funcției dacă le-ați numit similar cu o variabilă. Asta mi s-a întâmplat și mie. Am încercat să indexez parametrul, care atunci era o funcție. –  > Por Thomas.
  • se va întâmpla, de asemenea, atunci când vă lipsește paranteza la apelarea funcției..exemplu în cazul meu de mai jos. def maxProfit2(prices): return ([tomorrow – today for today, tomorrow in zip(prices, prices[1:]) if tomorrow – today > 0])) #calling print(maxProfit2[7,1,5,3,6,4]) – #calling print(maxProfit2[7,1,5,3,6,4]) –  > Por Krishna.
Peyman Majidi

Este atât de simplu, aveți 2 obiecte cu același nume, iar când spuneți: bank_holiday[month] Python crede că vrei să rulezi funcția ta și a primit ERROR.

Doar redenumiți matricea dvs. în bank_holidays <— adăugați un ‘s‘ la sfârșit!”, așa:

bank_holidays= [1, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 2] #gives the list of bank holidays in each month

def bank_holiday(month):
   if month <1 or month > 12:
       print("Error: Out of range")
       return
   print(bank_holidays[month-1],"holiday(s) in this month  ")

bank_holiday(int(input("Which month would you like to check out: ")))

doppleganger

Puteți folosi acest lucru:

bankHoliday= [1, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 2] #gives the list of bank holidays in each month

def bank_holiday(month):
   month -= 1#Takes away the numbers from the months, as months start at 1 (January) not at 0. There is no 0 month.
   print(bankHoliday[month])

bank_holiday(int(input("Which month would you like to check out: ")))

Comentarii

  • Poți să incluzi inline code span astfel încât codul să fie lizibil & verificabil. –  > Por Usama Abdulrehman.

Tags: