Python IF语句不比较从文件接收的值

Python IF语句不比较从文件接收的值,python,file,Python,File,我几天前才开始编程。我制作了这个程序,用户可以创建一个测验(所有的Q和a都写在一个文件中),当我来阅读答案文件时,我用with语句独立提取每一行,然后与Qs文件的每一行进行比较。这很好,我想要比较的值确实是。但是当答案与文件上的答案匹配时,if语句仍然返回else命令!难以置信!下面是需要澄清的输出 问题1:你叫什么名字 输入答案:abdo 对不起,那是错的!正确答案是:阿布多 你的分数是:0 问题2:我叫什么名字 输入答案:abdo1 对不起,那是错的!正确答案是:abdo1 你的分数是:0

我几天前才开始编程。我制作了这个程序,用户可以创建一个测验(所有的Q和a都写在一个文件中),当我来阅读答案文件时,我用with语句独立提取每一行,然后与Qs文件的每一行进行比较。这很好,我想要比较的值确实是。但是当答案与文件上的答案匹配时,if语句仍然返回else命令!难以置信!下面是需要澄清的输出

问题1:你叫什么名字

输入答案:abdo

对不起,那是错的!正确答案是:阿布多

你的分数是:0

问题2:我叫什么名字

输入答案:abdo1

对不起,那是错的!正确答案是:abdo1

你的分数是:0

这是我的代码:

import sys
questions = []
answers = []
score = 0
print("+++++++++++++++Welcome to SS Quiz Maker++++++++++++++++")
save = input("Would you like to create a new quiz or load your saved one :")
if save == "y":
    for i in range(0,2):
        print( "Question number",i + 1)
        questions.append(input("Enter a Question :"))
        answers.append(input("Enter an Answer :"))

    f = open("SS_QUIZ_QUESTIONS.txt", "w")
    f.truncate()
    for i in questions:
        f.write(i)
        f.write("\n")
    f.close()
    f = open("SS_QUIZ_ANSWERS.txt", "w")
    for i in answers:
        f.write(i)
        f.write("\n")
    f.close()
else:   
    for i in range(0,2):
        with open('SS_QUIZ_QUESTIONS.txt') as f:
            u = 1
            for line in f:
                if u == i + 1:
                    break
        with open('SS_QUIZ_ANSWERS.txt') as f:
            u = 1
            for line2 in f:
                if u == i + 1:
                    break
        print("Question Number ",i + 1," :",line)
        ans = str(input("input the Answer :" ))

        if  ans == line2:
            print("Correct")
            score = score +1
            print("Your score is :",score)

        else:
            print("Sorry, thats Wrong!")
            print("The right answer is :", line2)
            print("Your score is :",score)

问题是,当您将答案写入文件时,您也会写入换行符
“\n”
。现在,当您比较字符串时,实际上是将
abdo1
abdo1\n
进行比较,这是错误的。在比较之前,请在
行2
字符串上使用
.rstrip()
方法

在代码中:

if ans == line2.rstrip():

应该这样做

有空格吗?你能把这两行并排打印出来吗?你说的空白是什么意思对不起,python没有太多内容,所以请耐心等待me@AbdulrahmanAttia这与Python无关。空白是空格、换行符、制表符等字符。打印两个字符串时,它们看起来可能相同,但在空格中可能有所不同
“foo”
“foo”
您的项目似乎不适合刚开始学习编程的人。非常感谢Leon Z和depperm。工作起来很有魅力!