我正在尝试生成一个随机的数字数组。我的实验中有x轮。我希望在每一轮中显示不同的图片,并且图片以随机顺序出现。我正在尝试嵌入一些python代码models.py
来做到这一点,但我没有得到任何结果。
问问题
766 次
1 回答
1
好的,假设您有一组名为“img1.jpg、img2.jpg、img3.jpg”等的图像 - 为简单起见,我们假设这些图像的数量与您的轮数一致。
这样做有点天真但可行的方法如下:
在models.py
:
import random
class Constants(BaseConstants):
imgs = ['img1.jpg', 'img2.jpg', 'img3.jpg',]
class Subsession(BaseSubsession):
def creating_session(self):
if self.round_number == 1:
for p in self.session.get_participants():
imgs = Constants.imgs.copy()
random.shuffle(imgs)
p.vars['images'] = imgs
在pages.py
:
class MyPage(Page):
def vars_for_template(self):
image = self.participant.vars['images'][self.round_number - 1]
return {'img_to_show': image}
就是这样:您在每一轮中为每个参与者显示一个单独的随机图像,稍后您可以在此页面的模板上使用它
PS:我称这种方法为幼稚,因为一种更复杂的方法是访问存储图像的文件夹并获取与游戏中的回合数相对应的图像子集。但有时这种直接的方法更容易出错。
于 2018-06-04T23:31:55.567 回答