1. ホーム
  2. python

[解決済み] Python 'list indices must be integers, not tuple" (リストのインデックスは整数でなければなりません。

2022-02-15 18:57:34

質問

2日前から頭を打ち付けています。私はpythonとプログラミングの初心者なので、このタイプのエラーの他の例はあまり役に立ちませんでした。リストとタプルのドキュメントを読んでいますが、助けになるものは何も見つかっていません。何かヒントがあれば、とてもありがたいです。必ずしも答えを探しているわけではなく、ただどこを見ればいいのか、より多くのリソースを探しています。私はPython 2.7.6を使用しています。ありがとうございます。

measure = raw_input("How would you like to measure the coins? Enter 1 for grams 2 for pounds.  ")

coin_args = [
["pennies", '2.5', '50.0', '.01'] 
["nickles", '5.0', '40.0', '.05']
["dimes", '2.268', '50.0', '.1']
["quarters", '5.67', '40.0', '.25']
]

if measure == 2:
    for coin, coin_weight, rolls, worth in coin_args:
        print "Enter the weight of your %s" % (coin)
        weight = float(raw_input())
        convert2grams = weight * 453.592

        num_coin = convert2grams / (float(coin_weight))
        num_roll = round(num_coin / (float(rolls)))
        amount = round(num_coin * (float(worth)), 2)

        print "You have %d %s, worth $ %d, and will need %d rolls." % (num_coin, coin, amount, num_roll)

else:
    for coin, coin_weight, rolls, worth in coin_args:
        print "Enter the weight of your %s" % (coin)
        weight = float(raw_input())

        num_coin = weight / (float(coin_weight))
        num_roll = round(num_coin / (float(rolls)))
        amount = round(num_coin * (float(worth)), 2)

        print "You have %d %s, worth $ %d, and will need %d rolls." % (num_coin, coin, amount, num_roll)

これがスタックトレースです。

File ".\coin_estimator_by_weight.py", line 5, in <module>
  ["nickles", '5.0', '40.0', '.05']
TypeError: list indices must be integers, not tuple

解決方法は?

問題は [...] には2つの異なる意味があります。

  1. expr [ index ] は、リストの要素にアクセスすることを意味します。
  2. [ expr1, expr2, expr3 ] は、3つの式から3つの要素のリストを構築することを意味します。

あなたのコードでは、外側のリストの項目を表す式の間にカンマを入れるのを忘れています。

[ [a, b, c] [d, e, f] [g, h, i] ]

そのため、Pythonは2番目の要素の開始を1番目の要素に適用されるインデックスと解釈し、このようなエラーメッセージが表示されています。

正しい構文は次のとおりです。

[ [a, b, c], [d, e, f], [g, h, i] ]