这可能是一个愚蠢的问题,我相信我很有可能会采用完全错误的方法来解决我的问题,因此,如果有人知道更好的方法,请随时纠正我/将我指向正确的方向。
我正在尝试用Python制作一个基本的测验程序,但我似乎找不到一种很好的方法来实际用问题答案回答问题并存储正确的答案。理想情况下,我也希望将问题中的答案也打乱一下,例如,#1的答案也不一定总是“ A”,但是此步距目前太远了。
无论如何,我认为字典可以工作。我会做这样的事情:
test = {
'1': "What is 1+1?\nA) 2\nB) 11\nC) 1\nD) None of the above.\n\n", #A
'2': "What is 2+2?\nA) 2\nB) 4\nC) 1\nD) None of the above.\n\n", #B
'3': "What is 3+3?\nA) 2\nB) 11\nC) 6\nD) None of the above.\n\n", #C
'4': "What is 4+4?\nA) 2\nB) 11\nC) 1\nD) None of the above.\n\n", #D
'5': "What is 5+5?\nA) 2\nB) 11\nC) 10\nD) None of the above.\n\n", #C
'6': "What is 6+6?\nA) 2\nB) 12\nC) 1\nD) None of the above.\n\n", #B
}
answer = raw_input(test['1'])
我可以使用它轻松地按顺序或随机进行一些修改即可打印出问题。但是,我没有办法在字典上附加正确的答案,这意味着我不得不做一些荒谬的if
陈述。有人知道解决方案吗?有没有一种方法可以向每个字典条目添加第三个值?我完全忽略了变通办法吗?任何帮助将不胜感激。
看来您在布置数据结构错误。您应该使用词典列表,而不是像其他答案所暗示的元组或列表字典。
questions = [
{'question':"What is 1+1?\nA) 2\nB) 11\nC) 1\nD) None of the above.\n\n",
'answer':"#A"},
{'question':"What is 2+2?\nA) 2\nB) 4\nC) 1\nD) None of the above.\n\n",
'answer':"#B"},
...}
这将使您遍历以下问题:
for q in questions:
print(q['question'])
ans = input(">> ")
if ans == q['answer']:
# correct!
else:
# wrong!
如果仍然需要数字,则可以将其另存number
为字典的另一个键(作为数据库number
的主键,使其类似于数据库中的行):
{'number': 1,
'question': ...,
'answer': ...}
或者只是通过迭代您的问题采用enumerate
与start
关键字参数
for q_num, q in enumerate(questions, start=1):
print("{}. {}".format(q_num, q['question']))
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句