TypeError:'float'对象不可订阅

时间:2013-11-15 01:00:12

标签: python list replace insert indexing

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

基本上我有一个输入,用户将数字值(浮点输入)放入,然后它将所有这些上述列表索引设置为该值。出于某种原因,我无法在不提出问题的情况下设置它们:

TypeError: 'float' object is not subscriptable

错误。我做错了什么,或者我只是以错误的方式看待它?

5 个答案:

答案 0 :(得分:9)

PriceList[0]是一个浮点数。 PriceList[0][1]正试图访问浮点数的第一个元素。相反,做

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

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

答案 1 :(得分:2)

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

这说:转到我的收藏集PriceList的第一项。那东西是一个集合;得到它的第二项。那东西是一个集合;获得第3名...

相反,您需要切片

PriceList[:7] = [PizzaChange]*7

答案 2 :(得分:1)

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)

答案 3 :(得分:0)

您没有使用PriceList [0] [1] [2] [3] [4] [5] [6]选择多个索引,而是每个[]进入子索引。

试试这个

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

答案 4 :(得分:0)

看起来您正在尝试将PriceList的元素0到11设置为新值。语法通常如下所示:

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

如果它们总是连续的范围,那么写起来就更简单了:

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

作为参考,PriceList[0][1][2][3][4][5][6]引用“PriceList元素0的元素1的元素2的元素3的元素5的元素5。换句话说,它与{相同” {1}}。