Я пытаюсь создать небольшое веб-приложение на python3 с помощью Flask, и у меня возникла проблема со сравнением двух строк. По какой-то причине, даже если строки идентичны, моя функция возвращает false.
Вот что я пытаюсь сделать:
Я создал форму (вопрос) в HTML и ожидаю ответа от пользователя. Когда пользователь нажимает «Отправить», в python запускается функция, которая должна сравнивать ответ с правильным ответом. Если ответ == правильный_ответ, то отображается сообщение "Отлично!!" если не что-то вроде «Попробуйте еще раз».
def compare(str1, str2):
if str1==str2:
message = 'Excellent'
else:
message = 'Try again'
return message
Затем я получаю ответ из веб-формы, а также правильный ответ из файла .txt (это временный файл, который будет содержать только правильный ответ) и вызываю функцию: ...
answer=request.args.get('answer') #this works - value from the webform
f = open('temp.txt', 'r') #this works
correct_answer=f.read() #this works
f.close()
result=compare(answer, correct_answer) # this one always returns 'Try again'
Итак, проблема в том, что каким бы ни был ответ, результат всегда будет ложным.
Просто чтобы убедиться, что у меня те же значения, которые я пробовал:
print(answer)
print(correct_answer)
и у меня такое же значение, но функция возвращает false
Я старался:
print(type(answer))
print(type(correct_answer))
Результатом является 'str' для обоих print.
Любая идея, почему это не работает?






Возможно, в любой из строк есть начальные или конечные пробелы или символы новой строки, поэтому может быть лучше удалить эти символы, а затем сравнить их.
def compare(str1, str2):
#Strip both strings before comparing
str1 = str1.strip()
str2 = str2.strip()
if str1==str2:
message = 'Excellent'
else:
message = 'Try again'
return message
Я предполагаю, что
f.read(), вероятно, возвращает ответ, заканчивающийся символом новой строки.compare(answer, correct_answer.strip())должно работать.