这个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 :(得分: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")
我想如果答案是正确的,你也要显示分数,所以去除最后一行的缩进。