python琐事游戏错误

时间:2017-04-24 02:53:29

标签: python python-3.x function debugging

尝试制作一个游戏,其中每个问题都有与之关联的唯一值。然后,玩家的分数是她或他正确回答的问题的总分数。一直在摆弄它但我一直遇到这些错误: enter image description here

代码:

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

import sys

def open_file(file_name, mode):
    """Open a file."""
    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\nPress the enter key to exit.")
        sys.exit()
    else:
        return the_file

def next_line(the_file):
    """Return 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)
    point_value = 0
    question = next_line(the_file)

    answers = []
    answers.append(next_line(the_file))

    if( answers[0]=="True\n"):
        answers.append(next_line(the_file))
    else:
        for i in range(4):
            answers.append(next_line(the_file))

    correct = next_line(the_file)
    if correct:
        correct = correct[0]
        point_value = (int)(next_line(the_file).strip())
    explanation = next_line(the_file) 

    return category, question, answers, correct, explanation, point_value

def welcome(title):
    """Welcome the player and get his/her name."""
    print("\t\tWelcome to Trivia Challenge!\n")
    print("\t\t", title, "\n")

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

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

        answer = input("What's your answer?: ")

        # check answer
        if answer == correct:
            print("\nRight!", end=" ")
            score += 1
        else:
            print("\nWrong.", end=" ")
        print(explanation)
        print("Score:", score, "\n\n")

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

    trivia_file.close()

    print("That was the last question!")
    print("You're final score is", score)

main() 
input("\n\nPress the enter key to exit.")

不确定为什么会出现这些错误/为什么没有运行 - 建议? TY!

这是一个名为“trivia.txt”的独立.txt文件,包含所有问题和点。

1 个答案:

答案 0 :(得分:2)

最有可能发生错误,因为您的文本文件包含unicode字符。您可以将encoding参数添加到open调用,以告诉python它不是默认的ascii编码。

the_file = open(file_name, mode, encoding='utf-8')

如果这不起作用,可能是因为该文件使用的是不同的编码,例如'iso-8859-15'。

Python文档Unicode-HOWTO提供了有关处理Reading and Writing Unicode Data的更多详细信息。

相关问题