我有一本这样的字典:
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也许有人能帮我。非常感谢!
发布于 2022-06-16 16:16:31
您希望使用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循环解压缩每个元组,并使它们可用于打印语句的f-字符串。
这将产生以下结果:
>>> 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发布于 2022-06-16 16:21:55
我重新设计了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 Gatehttps://stackoverflow.com/questions/72648807
复制相似问题