Python索引错误:列表索引超出范围

2024-04-19 09:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Otree上做了一个实验,在这个实验中,玩家们输入自己的名字,然后参加一个关于谁捐了最多的三个的比赛。这些树是通过表单字段输入的。整数是一个预定义的变量。默认情况下,每个玩家进入实验时都会得到一个id(从1开始) 我已经对整个代码进行了编程,它最多可以与5个参与者一起工作,但现在我应该为最多8个参与者编程。当我尝试在Otree上输入参与者的数量时,我收到错误消息“index error:list index out of range”

matrix[p.id_in_group - 1][0] = p.name matrix[p.id_in_group - 1][self.round_number] = p.cumulative_donated_trees行出错

所以我猜矩阵的初始化是错误的? 我只想要一个有两列的矩阵:名字和树(当然还有索引列)和n行(n=玩家数量)``

型号.py:

class Donation(Page):
    try:
        form_model = 'player'
        form_fields = ['donation']

 def vars_for_template(self):
            names = []
            trees = []
            sortedtrees = []
            anzahlspalten = 0
            for p in self.subsession.get_players():
                if self.round_number == 1:
                    matrix[p.id_in_group - 1][0] = p.name
                matrix[p.id_in_group - 1][self.round_number] = p.cumulative_donated_trees
            for i in range(0, Constants.number_of_players):
                names.append(matrix[i][0])
                trees.append(matrix[i][self.round_number])
            sortedtrees = sorted(trees, reverse=True)
            anzahlspalten = len(sortedtrees)         
            for l in range(0, anzahlspalten):
                if self.player.cumulative_donated_trees == sortedtrees[l]:
                    self.player.current_position = str(l + 1)

型号.py:

name = models.StringField(label="Your first name:")
    transcribed_text = models.LongStringField()
    levenshtein_distance = models.IntegerField()
    guthaben = models.CurrencyField(initial=c(0))
    cumulative_guthaben = models.CurrencyField()
    cumulative_donation = models.FloatField(null=True)
    right_answer = models.BooleanField()
    right_answer_text = models.StringField()
    treatmentgroup = models.StringField()
    donation = models.FloatField(min=c(0))
    no_trees = models.FloatField(initial=0.0)
    cumulative_donated_trees = models.FloatField()
    current_position = models.StringField()
    spielstand = models.StringField()

树背:

File "c:\users\wiwi-admin\appdata\local\programs\python\python37\lib\site-packages\otree\views\abstract.py" in get_context_data
  338.             user_vars = self.vars_for_template()

File "C:\Users\Wiwi-Admin\Desktop\Backup Version 2 - Competition WITHIN Treatmentgroups\Master thesis code\__pycache__\oTree\my_environmental_surveyTG4\pages.py" in vars_for_template
  252.                     matrix[p.id_in_group - 1][0] = p.name

Exception Type: IndexError at /p/tgv0j88z/my_environmental_surveyTG4/Donation/7/
Exception Value: list index out of range

Tags: nameinselfidnumberformodelsgroup