使用文本文件的测验程序

时间:2015-03-01 05:03:49

标签: python random

我试图在Python中创建一个测验程序,其中问题存储在一个txt文件中,答案存储在另一个文件中。问题在文本文件中列出如下:

Which one of these is a percussion instrument? A. Trumpet B. Euphonium C. Viola D. Glockenspiel

该程序以随机​​顺序提取问题并保持正确答案数量的得分。 我知道如何打开文件,从中读取文件并在屏幕上显示文件的内容,我现在甚至知道如何随机化文件中的信息。但是,由于涉及多行和另一个文件来获得答案,我不知道从哪里开始。 我真的很感激你能提供给我的任何帮助。 如果您需要澄清任何内容,请随时提出问题。

编辑: 好吧,我决定稍微改变一下我的想法,这可能会让事情变得更容易。使用CSV文件可能是更好的选择。这是我到目前为止所拥有的。

def Trivia():
score=0
myFile = open("farming.csv","r") # opens the CSV file and stores it in the array myFile
players = myFile.readlines() # reads the lines of the CSV file into the variable players
questionno=1
while questionno < 6:

    for p in players:
        data = p.split(",") #splits each cell of the CSV file into its parts
    questions = data[0]
    answera = data[1]
    answerb = data[2]
    answerc = data[3]
    CorrectAnswer = data[4]
    print("Question #",questionno)
    print(questions) #prints the question and the 3 answers
    time.sleep(0.5)
    print(answera)
    time.sleep(0.5)
    print(answerb)
    time.sleep(0.5)
    print(answerc)
    time.sleep(0.5)
    answer = input("Answer? ") #asks the user for their answer
    time.sleep(1)
    print(".")
    time.sleep(1)
    print(".")
    time.sleep(1)
    print(".")

    if answer == CorrectAnswer: #checks if the answer is correct and prints approptiate responses
        print("That is the correct answer")
        score=score+1
        time.sleep(1)
    else:
        print("That is not the correct answer")
        time.sleep(1)
    print("Your current score is", score)
    print("")
    questionno = questionno+1

myFile.close()

我现在的问题是我不知道如何进入测验中的下一个问题。使用这种格式,它一直在问同样的问题。有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

这个问题有两个方面:保存什么,以及如何保存。让我们回答&#34;如何&#34;第一。

看起来像你需要的是serialization,这是一种奇特的说法,用于保存特定格式的数据&#34;。我会了解picklejson。这将允许您保存和加载对象,因此您可以保存一个代表问题的类。

关于你保存的而不是如何保存它,我猜每个答案应该与一些问题一起保存,然后你可以在它们之间建立联系 - 有点像{{3 }}。

祝你好运!

答案 1 :(得分:0)

我还不是百分之百肯定,但我还没有自己运行程序来检查。但我认为它可能是“While”模块。它说虽然问号是六岁以下,做那个问题,所以当你向问题添加1时,它仍然在6以下再次运行该程序。也改变它

如果questionno == 1:   .....   .....   .....

为测验中的下一个问题,你需要用

启动它

如果questionno == 2:   .....   .....   .....

现在写第二个测验