我是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?
答案 0 :(得分:0)
从文本文件中读取行时,您遇到的问题是一个非常常见的问题。 当您从文本文件中读取一行时,如果格式如下:
line one
line two
line three
[empty line]
列表的每个元素的格式都类似于line one\n
或line two\n
,因为\n
是许多系统的回车符。当您在python程序中键入答案时,您只需键入line one
,因此当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]
解决方案。
希望这有帮助,
苹果