Как конвертировать random.choice в целое число для эксперимента? - PullRequest
0 голосов
/ 20 апреля 2020

Я разрабатываю эксперимент по психофизике, используя Python, где у меня есть слуховые стимулы (слоги), текстовые стимулы (пара) и правильный ответ - все они хранятся в CSV-файле.

Я пытаюсь сделать так, чтобы один и тот же текстовый стимул не был представлен последовательно (например, слуховые стимулы 1, 2, 3, 4 и текстовые стимулы - вы слышали «1» или «2» «поэтому я стараюсь избегать представления этого последнего стимула дважды подряд).

Я создал следующий код:

Parameters_file = pd.read_csv('Parameters.csv', header=0)
Pair_list = Parameters_file['Pair']
syllable_list = Parameters_file['Stimulus']
corr_Ans_list = Parameters_file['corrAns']

past_syllable = [0] #To provide an initial auditory stimulus.

for i in range(len(syllable_list)):
     list_1 = [2,3,4,5]
     list_2 = [0,1,4,5]
     list_4 = [0,1,2,3]
     if past_syllable[-1] == 0:
          trial_index = randint(2,5,1)
     elif past_syllable[-1] == 1:
          trial_index = random.choice('list_1')
     elif past_syllable[-1] == 2:
          trial_index = random.choice('list_2')
     elif past_syllable[-1] == 3:
          trial_index = random.choice('list_2')
     else:
          trial_index = random.choice('list_3')
     past_syllable += str(trial_index)

  index = int(trial_index)
  Pair = Pair_list[index]
  corrAns = corr_Ans_list[index]

Однако я продолжаю получать следующую ошибку:

invalid literal for int() with base 10: 't'

Может кто-нибудь помочь с этим? Спасибо!

1 Ответ

1 голос
/ 20 апреля 2020
random.choice('list_2')

удалите кавычки, потому что выше просто строка, он вернул "t", потому что он выбрал 4-й элемент в "list_2", который является т.

...