为了账号安全,请及时绑定邮箱和手机立即绑定

如何简化我的 Python 测验?(让它更短)

如何简化我的 Python 测验?(让它更短)

MMMHUHU 2023-12-12 21:35:14
我做了一个Python测验,大约有500行。我想知道如何使其更短并简化代码。这是我在测验中的一个问题的示例while counter<3:    def question(question,choices):                          print(question)                                for question in choices:                         print(question)     print('\033[0m'"____________________________________________________________\n")    question("Question 1. What is the real name of Batman?", ["A. Bruce Wayne", "B. Peter Parker", "C. Bruce Banner", "D. Bruce Waine"])    answer = input().lower()    if answer == "a":        print('\033[32m'"\nNice job! ✔\n")        score = score +1        counter = 4    elif answer == "bruce wayne":        print('\033[32m'"\nGreat work! ✔\n")        counter = 4        break    else:        score = score - 1        counter = counter +1        if counter ==3:            print('\33[31m'"\nIncorrect! ✘ The correct answer is A. Bruce Wayne\n")        elif counter ==1 or 2:            print('\33[31m'"\nIncorrect! ✘ Try again...\n")    print('\033[0m''\033[04m'"Your score is ",score)
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

下面是定义“问题”的自定义类的示例 - 然后您可以创建其中的许多问题,并以这种方式重用大量代码。


class Question:

    def __init__(self, number, question, choices, correct, chances=3):

        self.number = number

        self.question = question

        self.choices = choices

        self.correct = correct

        self.chances = chances


    def print(self):

        print(self.question, '\n', '\n'.join(self.choices))


    def guess(self):

        while self.chances:

            answer = input().lower()


            if answer in self.correct:

                print('\033[32m'"\nNice job! ✔\n")


                return True

            else:

                self.chances -= 1

                if self.chances == 0:

                    print('\33[31m\nIncorrect! ✘ The correct answer is', self.correct)

                    return False

                else:

                    print('\33[31m'"\nIncorrect! ✘ Try again...\n")


# Example setup

score = 0


all_questions = [

    Question(

        0,

        'What is the real name of Batman?',

        ['A. Bruce Wayne', 'B. Peter Parker', 'C. Bruce Banner', 'D. Bruce Waine'],

        ['a', 'bruce wayne']

    ),

    Question(

        1,

        'Another question..',

        ['A. Answer 1', 'B. Answer 2', 'C. Answer 3', 'etc..'],

        ['b', '3'],

    )

]


for question in all_questions:

    question.print()

    correct = question.guess()

    if correct:

        score += 1

我已经展示了一个示例,说明如何提出许多问题(在列表中),然后打印并一一猜测所有问题。


让我知道你有什么问题(哈)。


查看完整回答
反对 回复 2023-12-12
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信