我正在尝试使用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'。
知道为什么这不起作用吗?
答案 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