Loops 从文本文件中读取时出现记分循环问题
我是python新手,并创建了一个测验程序。我在单独的文本文件中有测验的问题和答案 答案的文本文件都是小写的,所以我不认为.lower()是问题所在 以下是我的代码: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
#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是的,我有,它确实打印了正确的答案。只是最后加起来不能打印出正确的分数