Python读错不正确

时间:2017-05-04 11:24:51

标签: python

这个Python代码选择了错误的信息作为答案,它选择正确答案的第一个字母而不是相应的数字。

#Trivia Challenge Game
#Trivia game that reads a plain text file

import sys

title = "Title"

def open_file(file_name, mode):
    try:
        the_file = open(file_name,mode)
    except IOError as e:
        print("Unable to open the file",file_name,"ending program \n",e)
        input("\n\n press the enter key to exit")
        sys.exit()
    else:
        return the_file

def next_line(the_file):
    """returns the next line from the trivia file, formatted"""
    line = the_file.readline()
    line = line.replace("/","\n")
    return line

def next_block(the_file):
    """return the next block of data from the trivia file"""
    category = next_line(the_file)
    question = next_line(the_file)

    answers = []
    for i in range(4):
        answers.append(next_line(the_file))

    correct = next_line(the_file)
    if correct:
        correct = correct[0]

    explanation = next_line(the_file)

    return category, question, answers, correct, explanation

def welcome(title):
    """welcome the player and get his/her name"""
    print("welcome to the quiz")
    print("\t\t",title,"\t\t")

def main():
    trivia_file = open_file("data.txt","r")
    title = next_line(trivia_file)
    welcome(title)
    score = 0

    #get first block
    category,question,answers,correct,explanation = next_block(trivia_file)
    while category:
        #ask a question
        print(category)
        print(question)
        for i in range(4):
            print("\t",i+1,"-",answers[i])

        #get answer
        answer = input("whats your answer:")
        #check answer
        print(correct," ",answer)
        if answer == correct:
            print("Right!",end=" ")
            score += 1
        else:
            print("Wrong!",end =" ")
            print(explanation)
            print("score: ",score,"\n\n")

        #get next block
        category,question,answers,correct,explanation = next_block(trivia_file)


    trivia_file.close()

    print("That was the last question")
    print("Your final score is",score)

main()
input("press the enter key to exit")

如果你能指出它为什么不能正常工作那么真棒=)

1 个答案:

答案 0 :(得分:0)

此代码:

correct = next_line(the_file)
if correct:
    correct = correct[0]

获取文件的下一行,替换" /"使用" \ n",然后获取结果字符串的第一个字符。如果不知道数据文件中正确答案的格式,我只能猜出你想要从中得到什么,但如果正确答案的编号在一个单独的行中,你应该这样做:

correct.splitlines()

然后选择结果列表的相应索引。

另外,这里:

    if answer == correct:
        print("Right!",end=" ")
        score += 1
    else:
        print("Wrong!",end =" ")
        print(explanation)
        print("score: ",score,"\n\n")

我想如果答案是正确的,你也要显示分数,所以去除最后一行的缩进。