2017-04-24 77 views
1

試圖讓每個問題都有一個與其相關的唯一值的遊戲。玩家的分數就是他或她正確回答的問題的總分數。它被擺弄,但我一直運行到這些錯誤: enter image description herepython瑣事遊戲錯誤

代碼:

# 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文件。

回答

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的更多詳細信息。