如何将列表中的项目分配给随机函数

时间:2015-10-21 11:52:52

标签: python python-3.x

对于我的计算机科学中的受控评估,我必须进行“安全测验”,其中每次测验开始时都必须随机给出所有问题。问题及其各自的答案如下:

  
      
  1. 什么是CEOP?
      儿童剥削和在线保护   刑事侦查和在线保护   儿童剥削和有组织的保护者

  2.   
  3. 当你收到一个你不认识的人的电子邮件时,你该怎么办?   删除它并标记为垃圾邮件
      回复并打个招呼   转发给您的朋友

  4.   
  5. 您应该保密密码吗?   除了父母外,切勿泄露密码   只给你最好的朋友   把它们交给陌生人

  6.   
  7. 当一个吓唬你的网上联系人要求亲自见到你时你应该怎么做?   向CEOP报告   安排见他们
      安排与你最好的朋友见面

  8.   
  9. 如果您的帐户出现问题,电子邮件会要求您输入银行帐户详细信息,该怎么办?
      联系银行检查他们是否发送了电子邮件   回复电子邮件
      输入您的银行帐户详细信息

  10.   

我的第一个想法是将所有问题都列入一个列表但后来我意识到我不知道如何使每个问题以随机顺序出现,以及如何为列表中的问题分配答案。

我知道理解这一点有多难,但我们非常感谢任何提示,技巧和有用的评论。

1 个答案:

答案 0 :(得分:2)

您应该将问题和答案组合到一个对象中。例如,您可以为每个问题使用字典或命名元组,或创建自定义类以使用适当的答案对问题进行建模。

然后将这些对象放入列表中并使用random.shuffle()更改顺序。

例如,使用named tuple看起来像这样:

import random
from collections import namedtuple

Question = namedtuple('Question', 'text answers')

questions = [
    Question('What is CEOP?', (
        'Child Exploitation and Online Protection',
        'Criminal Exploration and Online Protection',
        'Child Exploitation and Organised Protectors')),
    Question('When you get an email from someone you do not know, what should you do?', (
        'Delete it and mark as spam',
        'Reply and say hello',
        'Forward to your friends')),
    # ...
]

random.shuffle(questions)
for question in questions:
    print(question.text)
    for answer in question.answers:
        print(answer)
    print()

Question()对象将问题标题和可能的答案放在一起。您可以添加第3个字段来记录哪个答案是正确的,这样您就可以验证由测验者选择的答案。