字符串比较在python中失败

时间:2019-05-28 08:41:57

标签: python string

我正在尝试使用Flask在python3中构建一个小型Web应用程序,比较两个字符串时遇到问题。由于某些原因,即使字符串相同,我的函数也会返回false。

这就是我想要做的:

我用HTML创建了一个(问题)表单,希望得到用户的答复。当用户单击“提交”时,将在python中触发一个函数,该函数应该将答案与正确答案进行比较。如果答案== correct_answer,则会显示一条消息“ Excellent !!”。如果不是“重试”之类的话。

def compare(str1, str2):
   if str1==str2:
      message = 'Excellent'
   else:
      message = 'Try again'
   return message

然后,我从Web表单中检索答案,并从.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'。

知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:0)

这两个字符串中可能都有前导或尾随空格或换行符,因此最好将那些字符去掉,然后再进行比较。

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