2017-05-04 14 views
-2

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

あなたはそれが正しく機能していない理由は、素晴らしいだろうと指摘することができれば=)

+0

予想される出力は何ですか?データファイルの内容は何ですか? – Kewl

答えて

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

私はあなたが答えが正しかった場合はそのデインデント、また、そのための最後の行をスコアを表示するとします。

関連する問題