Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用文本文件的测验程序_Python_Random - Fatal编程技术网

Python 使用文本文件的测验程序

Python 使用文本文件的测验程序,python,random,Python,Random,我试图用Python创建一个测验程序,其中问题存储在一个txt文件中,答案存储在另一个txt文件中。这些问题载于文本文件内,详情如下: 其中哪一种是打击乐器? A.小号 大戟属 中提琴 D.格洛肯斯皮尔 该程序以随机顺序将问题取出,并对正确答案的数量进行评分。 我知道如何打开文件、读取文件并在屏幕上显示文件内容,现在我甚至知道如何随机化文件中的信息。然而,由于涉及到多行代码和另一个文件来获得答案,我不知道从哪里开始。 如果你能给我任何帮助,我将不胜感激。 如果您需要澄清任何事情,请随时提问 编辑

我试图用Python创建一个测验程序,其中问题存储在一个txt文件中,答案存储在另一个txt文件中。这些问题载于文本文件内,详情如下:

其中哪一种是打击乐器?
A.小号
大戟属
中提琴
D.格洛肯斯皮尔

该程序以随机顺序将问题取出,并对正确答案的数量进行评分。 我知道如何打开文件、读取文件并在屏幕上显示文件内容,现在我甚至知道如何随机化文件中的信息。然而,由于涉及到多行代码和另一个文件来获得答案,我不知道从哪里开始。 如果你能给我任何帮助,我将不胜感激。 如果您需要澄清任何事情,请随时提问

编辑:
好的,我决定稍微改变一下我的想法,这样可能会更容易些。使用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()
def琐事():
分数=0
myFile=open(“farming.csv”,“r”)#打开csv文件并将其存储在数组myFile中
players=myFile.readlines()#将CSV文件的行读取到变量players中
问题1
当问题编号<6时:
对于p-in玩家:
data=p.split(“,”)#将CSV文件的每个单元格拆分为各个部分
问题=数据[0]
回答A=数据[1]
回答b=数据[2]
answerc=数据[3]
CorrectAnswer=数据[4]
打印(“问题#”,问题编号)
打印(问题)#打印问题和3个答案
睡眠时间(0.5)
打印(回答)
睡眠时间(0.5)
打印(回答B)
睡眠时间(0.5)
打印(回答)
睡眠时间(0.5)
回答=输入(“回答?”)#询问用户的答案
时间。睡眠(1)
打印(“.”)
时间。睡眠(1)
打印(“.”)
时间。睡眠(1)
打印(“.”)
如果答案==正确答案:#检查答案是否正确并打印适当的答案
打印(“这是正确的答案”)
分数=分数+1
时间。睡眠(1)
其他:
打印(“这不是正确的答案”)
时间。睡眠(1)
打印(“您当前的分数为”,分数)
打印(“”)
问题编号=问题编号+1
myFile.close()
我现在的问题是我不知道如何进入测验的下一个问题。使用这种格式,它总是问同样的问题。有什么想法吗


谢谢。

这个问题有两个方面:保存什么和如何保存。让我们先回答“如何”

似乎您需要的是,这是一种说“以特定格式保存数据”的奇特方式。我会了解或。这将允许您保存和加载对象,例如,您可以保存一个表示问题的类

关于你保存了什么,而不是如何保存,我想每个答案都应该和一个问题一起保存,然后你可以在它们之间建立链接,就像这样


祝你好运

到目前为止,我还不是100%确定,我还没有亲自运行该程序进行检查。但我认为可能是“While”模块。它说,当问号在6以下时,做那个问题,所以当你在问号上加1时,它仍然在6以下,再次运行程序。这次也要换

如果问题编号==1: ..... .....

对于测验中的下一个问题,你只需要从 如果问题编号=2: ..... .....


现在写第二个问题,你需要提供更多关于预期格式的信息。例如,问题是否以空格分隔?答案文件是否只包含答案(例如,每行包含一个字符)或问题标识符。我们不是代码编写服务。至少给我们看些东西。好吧,我决定稍微改变一下我的想法,这样可能会更容易。使用CSV文件可能是更好的选择。这是我到目前为止所拥有的。在原始问题中编辑。@Alan这有帮助吗?这是用锤子解决问题。Op,for in语法可能是您在范围(5):print(a)