2017-04-24 8 views
1

各質問に固有の値が関連付けられているゲームを作成しようとしています。プレイヤーのスコアは、彼女または彼が正しく答える質問の合計ポイント数です。それをいじるが、私はこれらのエラーに実行し続けるされて: enter image description herepython trivia game error

コード:なぜそれは、なぜそのが実行されていない/これらのエラーを持っています

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

わからない - 提案は?タイ!

これは、すべての質問とポイントを含む "trivia.txt"という名前の別個の.txtファイルに接続されています。

答えて

2

ほとんどの場合、テキストファイルにユニコード文字が含まれているため、エラーが発生している可能性があります。 open呼び出しにencodingパラメータを追加して、デフォルトのasciiエンコーディングではないことをtell pythonに伝えることができます。これが機能しない場合、ファイルは異なる符号化を使用しているため

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

、そのような「ISO-8859-15」のようであってもよいです。

Unicode-HOWTOには、Reading and Writing Unicode Dataの処理の詳細があります。