将项目附加到随机索引os初始列表中的列表

时间:2017-12-07 20:08:13

标签: python list random

我有一个测验答案的列表,我想做出多项选择,并且在多项选择中,答案永远不会在底部总是或在同一个索引但是这就是我的代码

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

这会返回例如一次迭代: 什么是哥伦比亚的首都? 伦敦 carracas 巴西利亚 圣地亚哥 波哥大

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

我想要的是,这种情况下的答案将随机插入到Ca(正确答案)中。有没有办法做到这一点?

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

    • 在上述两个列表中,每个元素都是由其索引引用的 通过在问题中找到元素的索引 可以通过相同的索引找到Answers中保存的值

    q表示为测验随机选择的问题 Ca表示q中问题的正确答案。 Pa表示从genral数组Answers中随机获得的可能答案。

1 个答案:

答案 0 :(得分:0)

这是一个干净的解决方案,看看,改变你想要的东西,询问你没有得到的东西。

# -*- 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))