将列表格式化为正确的字符串

Format list into correct string

你好,我有一个问题要做一个测验..我展示我的代码>>> 我的 class 是:

class Question:
    def __init__(self, prompt, answer_prompt, answer):
        self.prompt = prompt
        self.answer_prompt = answer_prompt
        self.answer = answer

我的主要是:

from Question import Question

question_prompt = [
    "De quels couleur sont les bananes ?",
    "De quels couleur sont les pommes ?",
    "De quels couleur sont les fraises ?"
]

question1_answers_prompt = [
    "(a) Rouge\n",
    "(b) Jaune\n",
    "(c) Bleue\n\n",
]

question2_answers_prompt = [
    "(a) Rouge\n",
    "(b) Violette\n",
    "(c) Orange\n\n",
]

question3_answers_prompt = [
    "(a) Rouge\n",
    "(b) Verte\n",
    "(c) Jaune\n\n",
]
questions = [
    Question(question_prompt[0], question1_answers_prompt[:], 'b'),
    Question(question_prompt[1], question2_answers_prompt[:], 'a'),
    Question(question_prompt[2], question3_answers_prompt[:], 'a'),
]


def run_test(questions):
    score = 0
    miss = 0
    answered = []

    for question in questions:
        print(question.prompt)
        answer = input(question.answer_prompt)

        answered.append(answer)
        if answer == question.answer:
            score += 1
        
    print(f"Tu as {score} / {len(questions)}")
    print(answered)
    

run_test(questions)

我尝试了一些技术列表理解,但我可以正确格式化我的 question_answers_prompt 列表 我有这样的东西:

\>\>\> ['(a) Rouge\n', '(b) Jaune\n', '(c) Bleue\n\n']

我需要的是:

\>\>\> (a) Rouge
    (b) Jaune
    (c) Bleue

在这种情况下,您可能希望加入列表的元素:

for question in questions:
    print(question.prompt)
    answer = input(''.join(question.answer_prompt))
    ....

输出:

De quels couleur sont les bananes ?
(a) Rouge
(b) Jaune
(c) Bleue

...

我只更改了这行代码:answer = input(question.answer_prompt) 如下所示:

class Question:
    def __init__(self, prompt, answer_prompt, answer):
        self.prompt = prompt
        self.answer_prompt = answer_prompt
        self.answer = answer

question_prompt = [
    "De quels couleur sont les bananes ?",
    "De quels couleur sont les pommes ?",
    "De quels couleur sont les fraises ?"
]

question1_answers_prompt = [
    "(a) Rouge\n",
    "(b) Jaune\n",
    "(c) Bleue\n\n",
]

question2_answers_prompt = [
    "(a) Rouge\n",
    "(b) Violette\n",
    "(c) Orange\n\n",
]

question3_answers_prompt = [
    "(a) Rouge\n",
    "(b) Verte\n",
    "(c) Jaune\n\n",
]
questions = [
    Question(question_prompt[0], question1_answers_prompt[:], 'b'),
    Question(question_prompt[1], question2_answers_prompt[:], 'a'),
    Question(question_prompt[2], question3_answers_prompt[:], 'a'),
]


def run_test(questions):
    score = 0
    miss = 0
    answered = []

    for question in questions:
        print(question.prompt)
        answer = input(''.join(a for a in question.answer_prompt))

        answered.append(answer)
        if answer == question.answer:
            score += 1
        
    print(f"Tu as {score} / {len(questions)}")
    print(answered)
    

run_test(questions)

您不能在 answers 定义中添加格式

question1_answers_prompt = ["(a) Rouge", "(b) Jaune", "(c) Bleue", ]
question2_answers_prompt = ["(a) Rouge", "(b) Violette", "(c) Orange", ]
question3_answers_prompt = ["(a) Rouge", "(b) Verte", "(c) Jaune", ]

但只有在使用的时候

  • 您需要在每行前加一个制表符,在每行后加一个换行符,这样的格式 f"\t{a}\n"

  • 加入空字符串以连接每个答案行

for question in questions:
    print(question.prompt)
    answer = input("".join(f"\t{a}\n" for a in question.answer_prompt))

给予

De quels couleur sont les bananes ?
        (a) Rouge
        (b) Jaune
        (c) Bleue
b

更多风格

添加符号以查看要回答的行

for question in questions:
    print(question.prompt)
    print("\n".join(f"\t{a}" for a in question.answer_prompt))
    answer = input(">> ")

De quels couleur sont les bananes ?
        (a) Rouge
        (b) Jaune
        (c) Bleue
>> a