web-dev-qa-db-ja.com

TypeError: 'float'オブジェクトは下付きではありません

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

エラー。私は何か間違ったことをしていますか、それとも間違った方法で見ていますか?

14
beardo

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
0
Pruthvikar

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の要素6の要素6を参照します。言い換えると、((((((PriceList[0])[1])[2])[3])[4])[5])[6]と同じです。

0
Pi Marillion