通过从文本文件中读取来获得评分循环的问题

时间:2014-09-19 08:29:41

标签: loops python-3.x notepad scoring

我是python的新手,并创建了一个测验程序。我有关于单独文本文件的测验的问题和答案。

答案的文本文件都是小写的,所以我不相信.lower()是问题所在。

以下是我的以下代码:

#Programming exercise-Writing to files

question_file = open("Quiz.txt","r")
answer_file = open("QuizAnswers.txt","r")


print("Welcome to the ScienceQuiz!")

question = question_file.readlines()

answer = answer_file.readlines()

score = 0

i = 0

for i in range(20):
    print(question[i])
    user_input = input("Enter your answer: ")
    user_input = user_input.lower()
    if user_input == answer[i]:
        score = score + 1
    else:
        score = score

print("\nYou scored: ",score,"/20")

在游戏结束时,尽管我输入的所有答案都是正确的,但它打印的是我得到的0/20?

1 个答案:

答案 0 :(得分:0)

从文本文件中读取行时,您遇到的问题是一个非常常见的问题。 当您从文本文件中读取一行时,如果格式如下:

    line one
    line two
    line three
    [empty line]

列表的每个元素的格式都类似于line one\nline two\n,因为\n是许多系统的回车符。当您在python程序中键入答案时,您只需键入line one,因此当Python尝试将两者进行字面比较时,由于显而易见的原因,它返回它们是不同的。

这个问题有两种解决方案:

  1. 添加

    for i in range(len(answer)):
        answer[i] = answer[i][:-1]
    

    紧跟在你之后:

    answer = answer_file.readlines()
    

    它将从每个元素中删除最后一个字符\n。这将是更常用的解决方案。

  2. \n添加到用户输入:

    user_input = input("Enter your answer: ") + "\n"
    
  3. 两种解决方案都要求QuizAnswers.txt的最后一行是空行而已。 您的QuizQuestions.txt在每一行的末尾也会有\n,这意味着将它们打印出来会导致看似无法解释的换行符也会输出。您必须通过循环解决问题来使用[:-1]解决方案。

    希望这有帮助,

    苹果