我正在制作一个骰子模拟器,当我遇到这个错误时,我正在测试美学:
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
,有人可以向我解释问题是什么吗?
答案 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 |
'-------'