Loops 从文本文件中读取时出现记分循环问题

Loops 从文本文件中读取时出现记分循环问题,loops,python-3.x,notepad,scoring,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!") questio

我是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?

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

    line one
    line two
    line three
    [empty line]
列表中的每个元素的格式类似于
第一行\n
第二行\n
,因为
\n
是许多系统的回车符。当您在python程序中键入答案时,您只需键入
第一行
,因此当python试图对这两行进行比较时,由于明显的原因,它返回的结果是它们不同

此问题有两种解决方案:

  • for i in range(len(answer)):
        answer[i] = answer[i][:-1]
    
    在完成以下任务后立即:

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

  • \n
    添加到用户输入:

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

    希望这有帮助


    苹果

    你有没有试过打印(答案[i])看看你是否真的抓住了你认为你是的答案?@Shadow9043是的,我有,它确实打印了正确的答案。只是最后加起来不能打印出正确的分数