首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python初学者-在多项选择测验程序中遇到问题

Python初学者-在多项选择测验程序中遇到问题
EN

Stack Overflow用户
提问于 2020-02-05 06:49:35
回答 1查看 194关注 0票数 0

Python初学者在这里使用3.8.1。

我目前正在开发一个多项选择测验程序,分为两个部分。第一部分允许用户创建一系列questions+answers并使用Pickle模块保存它们。第二部分允许用户加载他们的保存数据,并通过程序进行测验。

我的问题是,在程序的第二部分,我想单独显示每个问题的多项选择选项,但我的程序最终将显示每个问题的多项选择,而不仅仅是程序当前提出的问题的多项选择。

是什么导致了这个问题,如何才能修复它!

提前感谢您的帮助!

代码语言:javascript
运行
复制
#this is part one of the program, where the user creates and saves their data
def PartOne():
        import pickle
        import os
        from time import sleep
        os.system('cls')

        while True:
                t = input("How many questions do you have? : ")
                if t.isnumeric():
                        break
                else:
                        print("Please enter a valid number.")

        cx = list()
        ci = list()
        co = list()

        for i in range(0, int(t)):
            c = input("Please enter the question : ")
            ca = input("Please enter option A : ")
            cb = input("Please enter option B : ")
            cc = input("Please enter option C : ")
            cd = input("Please enter option D : ")
            while True:
                m = input("What option coresponds to the correct answer (a, b, c or d) : ")
                if m.lower() in ('a', 'b', 'c', 'd'):
                        cm = {"question": c, "answer": m}
                        cx.append(cm)
                        ch = {"option a": ca, "option b": cb, "option c": cc, "option d": cd}
                        ci.append(ch)
                        cu = {"question": cx, "answer": ci}
                        co.append(cu)
                        break
                else:
                    print("Invalid answer. Please enter «a», «b», «c» or «d»")

        while True:
                question_cm = input("Would you like to save? (yes or no) ")
                if question_cm.lower() in ('yes'):
                        pickle.dump(cx, open("Savedataone.dat", "wb"))
                        pickle.dump(ci, open("Savedatatwo.dat", "wb"))
                        pickle.dump(co, open("Savedatathree.dat", "wb"))
                        print("Saved!")
                        sleep(1.2)
                        break
                if question_cm.lower() in ('no'):
                        print ("Please save to use this information.")
                        sleep(1.2)
                        break
                else:
                        print("Invalid answer. Please enter yes or no.")

#This the second part of the program where the user uses what they inputed in part 1 to quiz themselves

def PartTwo():
        import pickle
        import random
        import os
        from time import sleep
        os.system('cls')

        while True:
                person = input("How much people will participate in this study session? : ")
                if person.isnumeric():
                        break
                else:
                        print("Please enter a valid answer.")

        for i in range(0, int(person)): 

                os.system('cls')
                cx = pickle.load(open("Savedataone.dat", "rb"))
                ci = pickle.load(open("Savedatatwo.dat", "rb"))
                co = pickle.load(open("Savedatathree.dat", "rb"))
                print("Study session will begin soon...")
                sleep(2)

                for cm in cx:
                        random.shuffle(cx)
                        print(cm["question"])
                        print(ci)
                        response = input("What was the correct answer (a, b, c or d)? : ")
                        if (response == cm["answer"]):
                                print("Good!")
                                continue
                        else:
                                print("Wrong...")
                                sleep(0.2)
                                print("The correct answer was", cm, ".")
                                continue
                        print("Study session is now over.")
                        sleep (1)
                print("Next person's study session will begin soon if needed.")
                sleep(1)
                print("Verification...")
                sleep(2.5)

        sleep(1.35)
        print("Study session is now over.") 
EN

回答 1

Stack Overflow用户

发布于 2020-02-05 07:12:58

将当前的partTwo()函数替换为:

代码语言:javascript
运行
复制
def PartTwo():
        import pickle
        import random
        import os
        from time import sleep
        os.system('cls')

        while True:
                person = input("How much people will participate in this study session? : ")
                if person.isnumeric():
                        break
                else:
                        print("Please enter a valid answer.")

        for i in range(0, int(person)):

                os.system('cls')
                cx = pickle.load(open("Savedataone.dat", "rb"))
                ci = pickle.load(open("Savedatatwo.dat", "rb"))
                co = pickle.load(open("Savedatathree.dat", "rb"))
                print("Study session will begin soon...")
                sleep(2)
                questionNumber=0
                for cm in cx:
                        random.shuffle(cx)
                        print(cm["question"])
                        print(ci[questionNumber])
                        response = input("What was the correct answer (a, b, c or d)? : ")
                        if (response == cm["answer"]):
                                print("Good!")
                                questionNumber += 1
                                continue
                        else:
                                print("Wrong...")
                                sleep(0.2)
                                print("The correct answer was", cm, ".")
                                questionNumber+=1
                                continue

                        print("Study session is now over.")
                        sleep (1)
                print("Next person's study session will begin soon if needed.")
                sleep(1)
                print("Verification...")
                sleep(2.5)

        sleep(1.35)
        print("Study session is now over.")

我注意到您将PartOne()中的每个答案都附加到了' ci‘中,但在partTwo()中,您只是打印ci,而没有指定打印所有内容的部分。

我添加了一个计数器(questionNumber)来跟踪当前提出的问题,该计数器用于指定给出哪些可能的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60066670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档