我有一个测验答案的列表,我想做出多项选择,并且在多项选择中,答案永远不会在底部总是或在同一个索引但是这就是我的代码
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(正确答案)中。有没有办法做到这一点?
答案是指所有答案可能的问题的一般列表 是指所有可能问题的一般清单
q表示为测验随机选择的问题 Ca表示q中问题的正确答案。 Pa表示从genral数组Answers中随机获得的可能答案。
答案 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))