Python“列表索引必须是整数,而不是元组" [英] Python 'list indices must be integers, not tuple"

查看:442
本文介绍了Python“列表索引必须是整数,而不是元组"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经两天为此感到头疼了.我是python和程序设计的新手,因此此类错误的其他示例对我没有太大帮助.我正在阅读列表和元组的文档,但没有找到任何有用的信息.任何指针将不胜感激.不一定要寻找答案,而只是寻找更多资源.我正在使用Python 2.7.6.谢谢

I have been banging my head against this for two days now. I am new to python and programming so the other examples of this type of error have not helped me to much. I am reading through the documentation for lists and tuples, but haven't found anything that helps. Any pointer would be much appreciated. Not looking for the answer necessarily, just more resources on where to look. I am using Python 2.7.6. Thanks

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

推荐答案

问题是python中的[...]有两个不同的含义

The problem is that [...] in python has two distinct meanings

  1. expr [ index ]表示访问列表的元素
  2. [ expr1, expr2, expr3 ]表示根据三个表达式构建三个元素的列表
  1. expr [ index ] means accessing an element of a list
  2. [ expr1, expr2, expr3 ] means building a list of three elements from three expressions

在您的代码中,您忘记了外部列表中各项的表达式之间的逗号:

In your code you forgot the comma between the expressions for the items in the outer list:

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

因此,Python将第二个元素的开头解释为要应用于第一个元素的索引,这就是错误消息的意思.

therefore Python interpreted the start of second element as an index to be applied to the first and this is what the error message is saying.

您正在寻找的正确语法是

The correct syntax for what you're looking for is

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

这篇关于Python“列表索引必须是整数,而不是元组"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆