Программа не видит переменную
Суть проблемы: я пишу программу, которая должна брать вопросы(их всего 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 шт):
Во-первых, вы понимаете, что вот в этом фрагменте
lol=f.read(1)
x = lol
print(lol)
a = int(input("Введите ваш ответ(цифру правильного ответа):"))
lol = f.read(1) # правильный ответ
вы два раза читаете по одному символу из файла. В одну и ту-же переменную. Но ее содержимое после первой операции чтения и после второй будут разные. Очень подозреваю, что это не то, чего вы ожидали. Особенно, если учесть, что после операции указатель в файле будет сдвинут и после второй операции чтения в lol будет вовсе не ваша правильная оценка. Понятно, что после этого и условный оператор сработает не так, как вам того хотелось бы.
Про знак присваивания вам уже написали.