TypeError:元组索引必须是整数,而不是元组

时间:2014-08-29 11:39:40

标签: python types tuples

我正在制作一个骰子模拟器,当我遇到这个错误时,我正在测试美学:

Traceback (most recent call last):
  File "C:/Users/Jacob/Documents/Code/Test.py", line 22, in <module>
    for j in DiceSides[i]:
TypeError: tuple indices must be integers, not tuple

这是我的代码:

Segments = {
0: '\t.-------.',
1: '\t|       |',
2: '\t|   O   |',
3: '\t|     O |',
4: '\t| O     |',
5: '\t| O   O |',
6: '\t| O O O |',
7: "\t'-------'"
}

DiceSides = (
(0, 1, 2, 1, 7),
(0, 3, 1, 4, 7),
(0, 4, 2, 3, 7),
(0, 5, 1, 5, 7),
(0, 5, 2, 5, 7),
(0, 6, 1, 6, 7)
)

for i in DiceSides:
    for j in DiceSides[i]:
        print(Segments[j])

我不理解这个TypeError,有人可以向我解释问题是什么吗?

1 个答案:

答案 0 :(得分:1)

您正在遍历DiceSides元素

for i in DiceSides:

i 不是索引,它绑定到DiceSides的元组。 Python中的for语句实际上是Foreach loop,您可以从迭代中获取实际元素,而不是索引到迭代中。

因此,因为i已经是一个元组,所以你可以直接循环该值:

for i in DiceSides:
    for j in i:
        print(Segments[j])

另一种拼写是:

for i in DiceSides:
    print(*(Segments[seg] for seg in i), sep='\n')

演示:

>>> for i in DiceSides:
...     print(*(Segments[seg] for seg in i), sep='\n')
... 
    .-------.
    |       |
    |   O   |
    |       |
    '-------'
    .-------.
    |     O |
    |       |
    | O     |
    '-------'
    .-------.
    | O     |
    |   O   |
    |     O |
    '-------'
    .-------.
    | O   O |
    |       |
    | O   O |
    '-------'
    .-------.
    | O   O |
    |   O   |
    | O   O |
    '-------'
    .-------.
    | O O O |
    |       |
    | O O O |
    '-------'