TypeError: ‘float’-object is niet onderschrijfbaar

In principe heb ik een invoer waarin een gebruiker een getalwaarde (float-invoer) zal plaatsen, waarna het al deze bovengenoemde lijstindexen op die waarde zal instellen. Om de een of andere reden kan ik ze niet instellen zonder een:

TypeError: 'float' object is not subscriptable

fout. Doe ik iets verkeerd of bekijk ik het gewoon verkeerd?


Antwoord 1, autoriteit 100%

PriceList[0] is een float. PriceList[0][1] probeert toegang te krijgen tot het eerste element van een float. Doe in plaats daarvan

PriceList[0] = PriceList[1] = ...code omitted... = PriceList[6] = PizzaChange

of

PriceList[0:7] = [PizzaChange]*7

Antwoord 2, autoriteit 11%

PriceList[0][1][2][3][4][5][6]

Dit zegt: ga naar het 1e item van mijn verzameling PriceList. Dat ding is een verzameling; krijg zijn 2e item. Dat ding is een verzameling; krijg zijn 3e…

In plaats daarvan wilt u in plakjes snijden:

PriceList[:7] = [PizzaChange]*7

Antwoord 3, autoriteit 4%

PizzaChange=float(input("What would you like the new price for all standard pizzas to be? "))      
for i,price in enumerate(PriceList):
  PriceList[i] = PizzaChange + 3*int(i>=7)

Antwoord 4

Het lijkt erop dat u probeert om de elementen 0 tot en met 11 van PriceList in te stellen op nieuwe waarden. De syntaxis ziet er meestal als volgt uit:

prompt = "What would you like the new price for all standard pizzas to be? "
PizzaChange = float(input(prompt))
for i in [0, 1, 2, 3, 4, 5, 6]: PriceList[i] = PizzaChange
for i in [7, 8, 9, 10, 11]: PriceList[i] = PizzaChange + 3

Als het altijd opeenvolgende bereiken zijn, is het nog eenvoudiger om te schrijven:

prompt = "What would you like the new price for all standard pizzas to be? "
PizzaChange = float(input(prompt))
for i in range(0, 7): PriceList[i] = PizzaChange
for i in range(7, 12): PriceList[i] = PizzaChange + 3

Ter referentie, PriceList[0][1][2][3][4][5][6] verwijst naar “Element 6 van element 5 van element 4 van element 3 van element 2 van element 1 van element 0 van PriceList Anders gezegd, het is hetzelfde als ((((((PriceList[0])[1])[2])[3])[4])[5])[6].


Antwoord 5

U selecteert niet meerdere indexen met PriceList[0][1][2][3][4][5][6] , in plaats daarvan gaat elke [] naar een subindex.

Probeer dit

PizzaChange=float(input("What would you like the new price for all standard pizzas to be? "))      
PriceList[0:7]=[PizzaChange]*7  
PriceList[7:11]=[PizzaChange+3]*4

LEAVE A REPLY

Please enter your comment!
Please enter your name here

eleven + fifteen =

Other episodes