以随机索引将项附加到列表

2024-10-02 14:25:00 发布

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

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

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)],bogota位于底部

我想要的是,在这种情况下的答案将被插入到Ca(正确答案)随机。有办法吗

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

    • 在上述两个列表中,每个元素都由其索引引用,因此
      通过在问题中找到元素的索引 可以通过相同的索引找到答案中的值

    q是指随机抽取的测验问题 Ca表示问题的正确答案。 Pa表示可能的答案,从genral数组答案中随机获得


Tags: sample答案in列表forindexifrange
1条回答
网友
1楼 · 发布于 2024-10-02 14:25:00

这里有一个干净的解决方案,看看,改变你想要的,问你没有得到什么

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

相关问题 更多 >