我正在用 PsychoPy(一种用于使用 Python 进行心理学实验的软件)编写一个程序,并不断收到“列表索引超出范围”错误。问题出现在“if already_used_values[a] == value:”的行上。我可以看到为什么会发生这种情况的唯一可能原因是因为 already_used_values 开始时是一个空列表;但是,我认为如果列表为空,我通过说 return False 解决了这个问题。以下是相关代码供参考。
already_used_values = []#integers in order to sort sounds
sorted_sounds = []#note that these are not 'sorted', they are randomized each time
answer_key = []
def already_used(value):#returns true if value in array of sounds has been used
if len(already_used_values) == 0:
return False
for a in already_used_values:
if already_used_values[a] == value:
return True
return False
def pick_random_value(upLim):
return random.randint(0,upLim-1)
def pick_sound(sound_list):#picks a sound randomly from list_of_sounds
new_value = pick_random_value(len(sound_list))
while(already_used(new_value)):
new_value = pick_random_value(len(sound_list))
already_used_values.append(new_value)
return sound_list[new_value]
def init_sorted_sounds():#appends random sound from list_of_sounds to sorted_sounds
for i in list_of_sounds:
sorted_sounds.append(pick_sound(list_of_sounds))
answer_key = already_used_values
先感谢您!