繁体   English   中英

Python读取错误

[英]Python Reading Incorrectly

这个 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")

如果你能指出为什么它不能正常工作,那就太棒了 =)

这段代码:

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")

如果答案正确,我想您也想显示分数,因此请取消缩进最后一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM