我创建了一个字典,其中的条目是这样的列表:
new_dict
{0: ['p1', 'R', 'p2', 'S'], 1: ['p3', 'R', 'p4', 'P'], 2: ['p5', 'R', 'p6', 'S'], 3: ['p7', 'R', 'p8', 'R'], 4: ['p9', 'P', 'p10', 'S'], 5: ['p11', 'R', 'p12', 'S'], 6: ['p13', 'S', 'p14', 'S']}
从这里我试图检查列表中的元素是否在下面的列表中Moves
。例如,在 new_dict[0] 中,我想检查 中的第一个元素和第三个元素Moves
,如果不是,则引发类异常。(这是代码片段。)
class NoStrategyError(Exception): pass
j=0
while j < len(new_dict):
i = 0
while i < 4:
# Write the code for the NoSuchStratgyError
Moves = ['R', 'S', 'P', 'r', 's', 'p']
if new_dict[j][1+4*i] not in Moves or new_dict[j][3+4*i] not in Moves:
raise NoStrategyError("No such strategy exists!")
i+=1
j+=1
现在这是问题所在,当我运行它时,出现以下错误:
if new_dict[j][1+4*i] not in Moves or new_dict[j][3+4*i] not in Moves:
IndexError: list index out of range
这是什么意思?
有没有更好的方法来编写内部while loop
?并将其改为for loop
? 像,for elem in new_dict[j]
?