我有一本这样的字典:
questions ={
'1.Who is Satoshi Nakamoto' : {'answers':{'right_answer':'Pseudonym','wrong_answer':['Bill Gate', 'Elon Musk', 'Warren Buffet']}},
'2.Who is richest' : {'answers':{'right_answer':'Pseudonym','wrong_answer':['Bill Gate', 'Elon Musk', 'Warren Buffet']}}
}
根据字典,我想打印问题和选项值。
这是我使用的代码:
for question in q:
print(question)
answers =([questions[question]['answers']['right_answer']] +questions[question]['answers']['wrong_answer'])
for answer in answers:
print(answer)
生成如下结果:
1.Who is Satoshi Nakamoto
Pseudonym
Bill Gate
Elon Musk
Warren Buffet
2.Who is richer
Pseudonym
Bill Gate
Elon Musk
Warren Buffet
但是我想打印带有项目头A, B, C, D等的选项,像这样:
1.Who is Satoshi Nakamoto
A.Pseudonym
B.Bill Gate
C.Elon Musk
D.Warren Buffet
2.Who is richer
A.Pseudonym
B.Bill Gate
C.Elon Musk
D.Warren Buffet
也许有人能帮我这个忙。非常感谢!您想使用string
库的ascii大写字母和zip()
来枚举您的答案:
import string
answers = ['Pseudonym', 'Bill Gate', 'Elon Musk', 'Warren Buffet']
for bullet, answer in zip(string.ascii_uppercase, answers):
print(f"{bullet}. {answer}")
zip()
将获取一定数量的列表(或其他集合)并将每个集合的第一个元素分组,然后是第二个,然后是第三个,依此类推。所以,zip([1,2,3], ['a','b','c'])
会得到[(1, 'a'), (2, 'b'), (3, 'c')]
。然后,for
循环解包每个元组,并使它们可用于print语句的f-string。
这会产生以下结果:
>>> answers = ['Pseudonym', 'Bill Gate', 'Elon Musk', 'Warren Buffet']
>>> for bullet, answer in zip(string.ascii_uppercase, answers):
... print(f"{bullet}. {answer}")
...
A. Pseudonym
B. Bill Gate
C. Elon Musk
D. Warren Buffet
我重新设计了questions
的结构,因为我觉得它不好。制作questions
列表允许我们对问题进行洗牌,这样它们就不会总是以相同的顺序出现。我把答案也打乱了,这样正确的答案就不会总是在第一个位置。
import random
import string
questions = [
{'question': 'Who is Satoshi Nakamoto',
'right_answer': 'Pseudonym',
'wrong_answers': ['Bill Gate', 'Elon Musk', 'Warren Buffet']},
{'question': 'Who is richest',
'right_answer': 'Pseudonym',
'wrong_answers': ['Bill Gates', 'Elon Musk', 'Warren Buffet']}]
random.shuffle(questions)
for i, entry in enumerate(questions, start=1):
all_answers = entry['wrong_answers'] + [entry['right_answer']]
random.shuffle(all_answers)
print(f'{i}. {entry["question"]}')
for letter, answer in zip(string.ascii_uppercase, all_answers):
print(f' {letter}. {answer}')
可能的结果:
1. Who is richest
A. Pseudonym
B. Warren Buffet
C. Bill Gates
D. Elon Musk
2. Who is Satoshi Nakamoto
A. Elon Musk
B. Pseudonym
C. Warren Buffet
D. Bill Gate