30
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

错误。我做错了什么还是我只是看错了?

4

5 回答 5

31

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

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

或者

PriceList[0:7] = [PizzaChange]*7
于 2013-11-15T01:07:44.440 回答
3
PriceList[0][1][2][3][4][5][6]

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

相反,您想要切片

PriceList[:7] = [PizzaChange]*7
于 2013-11-15T01:08:23.343 回答
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)
于 2013-11-15T01:08:39.220 回答
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
于 2013-11-15T01:05:31.967 回答
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]指“元素 6 元素 5 元素 4 元素 3 元素 2 元素 1 元素 0 的元素PriceList。换句话说,它与((((((PriceList[0])[1])[2])[3])[4])[5])[6].

于 2013-11-15T01:11:00.543 回答