Python 在随机索引os初始列表中将项追加到列表

Python 在随机索引os初始列表中将项追加到列表,python,list,random,Python,List,Random,我有一个我正在做的测验的答案列表,我想让它成为多项选择题,在多项选择题测验中,答案永远不会在底部,也不会在同一个索引中,但这就是我的代码 Answers = ["bogota", "carracas", "brasilia", "santiago", "london"] Questions = ["colombia", "venezuela", "brasil", "chile", "england"] q = [Questions[i] for i in sorted(random.sampl

我有一个我正在做的测验的答案列表,我想让它成为多项选择题,在多项选择题测验中,答案永远不会在底部,也不会在同一个索引中,但这就是我的代码

Answers = ["bogota", "carracas", "brasilia", "santiago", "london"]
Questions = ["colombia", "venezuela", "brasil", "chile", "england"]
q = [Questions[i] for i in sorted(random.sample(range(len(Questions)), 3))]
tryindex = [i for i, x in enumerate(QuestionsT) if x in q]
Ca = [Answers[i] for i in tryindex]
for x in q:
    Pa = [i for i in random.sample(Answers, 3) if i !=q.index(x)]
    Pa.append(Ca[q.index(x)])
    print("what is the capital of:" + x + "?")
    print("\n".join(Pa))
    a = input("\n""Answer")
    for i in range(0,3):
        if a == Ca[i]:
            score +=1
这将返回一次迭代的eg: 哥伦比亚的首都是什么? 伦敦 卡拉卡斯 巴西利亚 圣地亚哥 波哥大

请注意,由于.append(Ca[q.insert(x)],波哥大位于底部

我想要的是,本例中的答案将随机插入Ca(正确答案)。有办法做到这一点吗

  • 答案是指所有可能的问题的答案的总列表 指所有可能问题的总清单

    • 在上述两个列表中,每个元素都通过其索引引用,因此
      通过在问题中找到元素的索引,它是 可以找到答案中由相同索引保留的值
    q表示随机选择的测验问题 Ca表示q中问题的正确答案。 Pa表示可能的答案,从一般数组答案中随机获得


    • 这是一个干净的解决方案,看看,改变你想要的,索取你没有得到的

      # -*- coding: utf-8 -*-
      
      # Imports
      import random
      
      # Parameters
      data = {'Brasil': 'Brasilia',
       'Chile': 'Santiago',
       'Colombia': 'Bogota',
       'England': 'London',
       'Venezuela': 'Carracas'}
      
      nbr_questions = 3
      score = 0
      former_questions = ['']
      
      # Script
      for i in range(nbr_questions):
          # Grab the couple country / capital from the data dictionnary
          capital = ''
          while capital in former_questions:
              country, capital = random.choice(list(data.items()))
      
          # Create the proposition display list
          proposition_display = list()
          proposition_display.append(capital)
          i = 0
          while i < 2:
              cap = random.choice(list(data.values()))
              if cap not in proposition_display:
                  proposition_display.append(cap)
                  i += 1
      
          # Display
          print ('What is the capital of {} ?'.format(country))
          answer = input ('Answer: ')
      
          if answer.lower().strip(' ') == capital.lower().strip(' '):
              print ('Correct!')
              score += 1
          else:
              print ('Wrong. Answer was {}.'.format(capital))
      
          print ('-----------------------------')
      
          # Add this capital to the list former_questions to avoid repetition
          former_questions.append(capital)
      
      print ('Your score is: {}'.format(score))
      
      #-*-编码:utf-8-*-
      #进口
      随机输入
      #参数
      数据={'Brasil':'Barsilia',
      ‘智利’:‘圣地亚哥’,
      “哥伦比亚”:“波哥大”,
      “英格兰”:“伦敦”,
      “委内瑞拉”:“卡拉卡斯”
      nbr_问题=3
      分数=0
      前_问题=['']
      #剧本
      对于范围内的i(nbr_问题):
      #从数据字典中获取夫妻国家/首都
      资本=“”
      而资本在前(u)问题中:
      国家,首都=random.choice(列表(data.items()))
      #创建命题显示列表
      命题显示=列表()
      命题_显示追加(大写)
      i=0
      而i<2:
      cap=random.choice(列表(data.values()))
      如果cap不在命题_显示中:
      命题_显示追加(cap)
      i+=1
      #展示
      打印({}的首都是什么?’格式(国家))
      答案=输入('答案:')
      如果回答.lower().strip(“”)=大写.lower().strip(“”):
      打印('正确!')
      分数+=1
      其他:
      打印('错误。答案为{}.'.format(大写))
      打印('------------------------------')
      #将此大写字母添加到问题列表中,以避免重复
      前_问题。追加(大写)
      打印('您的分数为:{}'。格式(分数))
      
      不要使用索引。将压缩后的问答随机化,或者创建一个dict question=>answer。您的问答列表中没有引号。代码不起作用