Программа не видит переменную

Суть проблемы: я пишу программу, которая должна брать вопросы(их всего 10) из текстового файла, выводить их юзеру и записывать его ответы в другой файл. Все вопросы выводятся, ответы записываются, но число правильных ответов не считается! Оно остаётся таким же, каким я его задал в начале кода. Переменная rightAnswers.

f = open('vopros_2.txt')
f2 = open('otchot.txt', 'r+')
counter = 1
a=int
newLine='\n'
rightAnswers = 0
while counter <=10: #10 вопросов считаем
        print(newLine)
        print(newLine)
        print(newLine)
        lol=f.readline() #  вопрос
        print(lol)
        lol=f.readline() # первый вариант ответа
        print(lol)
        lol=f.readline() # второй вариант ответа
        print(lol)
        lol=f.readline() # третий вариант ответа
        print(lol)
        lol=f.read(1)
        x = lol
        print(lol)


        a = int(input("Введите ваш ответ(цифру правильного ответа):"))
        lol = f.read(1) # правильный ответ
        if a == x: 
                rightAnswers == rightAnswers + 1   
        f2.write("Ваш ответ на ")
        f2.write(str(counter))
        f2.write(" вопрос:")
        f2.write(str(a))
        f2.write(newLine)

        counter +=1


f2.write(newLine)
f2.write(newLine)
f2.write(newLine)
f2.write(newLine)
f2.write(newLine)


if rightAnswers == 10:
    print("10 из 10. Потрясающе! 5 в журнал)")
elif( rightAnswers  < 10 and rightAnswers > 5):
    print("Твоя оценка:4")
elif (rightAnswers <=5 and rightAnswers >= 3):
    print("Твоя оценка:3")
elif rightAnswers < 3:
    print("Садись, 2")




f2.close()
f.close()


Ответы (1 шт):

Автор решения: passant

Во-первых, вы понимаете, что вот в этом фрагменте

lol=f.read(1)
x = lol
print(lol)
a = int(input("Введите ваш ответ(цифру правильного ответа):"))
lol = f.read(1) # правильный ответ

вы два раза читаете по одному символу из файла. В одну и ту-же переменную. Но ее содержимое после первой операции чтения и после второй будут разные. Очень подозреваю, что это не то, чего вы ожидали. Особенно, если учесть, что после операции указатель в файле будет сдвинут и после второй операции чтения в lol будет вовсе не ваша правильная оценка. Понятно, что после этого и условный оператор сработает не так, как вам того хотелось бы.

Про знак присваивания вам уже написали.

→ Ссылка