我的if变量没有触发

时间:2017-10-27 21:36:25

标签: python

我正在尝试使用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

谢谢。

5 个答案:

答案 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)将字符串拆分为其行。在这种情况下,换行符通常没用。