我正在尝试使用python进行测验,该测试从文本文件中读取问题。我有一个名为ans
的变量,它应该是从文件中读取的答案,我打印变量,它说它应该说什么,但如果我实际输入它会说错了。
这是我的python代码:
right = 0
wrong = 0
num = 0
quest = 0
history = open("history.txt", "r")
lines = history.readlines()
while quest != 3:
quest = quest+1
num = num+1
print("Question", quest)
question = lines[num]
print(question)
num = num + 1
ans = lines[num]
print(ans)
answer = input()
answer = answer.lower()
if answer == ans:
print("correct")
right = right+1
else:
print("Wrong")
wrong = wrong+0
print("done")
我的history.txt文件格式如下
Blank Line Blank Line
What is the capital of England?
london
What is 1+1?
2
谢谢。
答案 0 :(得分:3)
history.readlines()
返回的字符串在其末尾有换行符,但input()
返回的字符串不具有换行符。使用rstrip()
从字符串中删除任何尾随空格。
ans = lines[num].rstrip()
答案 1 :(得分:0)
readlines()
在分割字符串时会留下换行符(\n
)。尝试使用
ans
ans = lines[num].rstrip()
答案 2 :(得分:0)
尝试单步执行您的程序。如果在从文件中读取后打印出行的内容,您将看到它有新的行字符:
>>> history = open("history.txt", "r")
>>> lines = history.readlines()
>>> lines
['Blank Line Blank Line\n', 'What is the capital of England?\n', 'london\n', 'What is 1+1?\n', '2']
您需要修剪换行符
ans = ans.rstrip("\n")
答案 3 :(得分:0)
我很确定有一个"新行char" - a.k.a' \ n' - 当你从文件中读取。 看看这个:
a = "123"
b = "123\n"
print(a == b)
Output: False
可是:
a = "123"
b = "123\n"
print(a == b.rstrip())
True
答案 4 :(得分:-1)
由于已经提到的事实a \n
仍然在每行的末尾,我建议使用re.split('\n',yourFile)
将字符串拆分为其行。在这种情况下,换行符通常没用。