在用户进行测试的Web应用程序上工作,他们会在测试结束时看到他们的分数。 我计算服务器端的用户分数。问题是,当用户参加测试时,它会影响另一个用户进行另一次测试的分数。我的意思是如果用户A进行测试,而用户B也从另一个系统进行测试,则在一天结束时,用户A将用户B的结果视为他的结果。真的不知道代码有什么问题。但下面是我计算用户分数的代码
def Compute_UserScore(self, details, ques_no):
try:
if(HomePage.answer_.strip() == ""):
self.response.write("""<script type = "text/javascript">
alert("Dear User, You can not answer same answer twice.. Take test Again !");
</script>""")
self.redirect('/otherPages/subjectSelect.html')
else:
count = 0
HomePage.ans_no = 0
HomePage.unans_no = 0
HomePage.correct_no = 0
HomePage.wrong_no = 0
HomePage.failed_ques = list()
HomePage.answer_ = HomePage.answer_.strip()
question_1 = HomePage.question_.split(" gcdc_split_format ")
while (count != (ques_no)):
user_answer = str(details[count]).strip().capitalize()
real_answer = str(HomePage.answer_[count]).strip().capitalize()
if (len(str(user_answer).strip()) == 1):
HomePage.ans_no = HomePage.ans_no + 1
if(user_answer.strip() == real_answer.strip()):
HomePage.correct_no = HomePage.correct_no + 1
else:
HomePage.wrong_no = HomePage.wrong_no + 1
HomePage.failed_ques.append(str("No. " + str(int((count + 1))) + " " + str(question_1[count])))
else:
HomePage.unans_no = HomePage.unans_no + 1
count = count + 1
HomePage.answer_ = ""
except:
self.redirect('/')
return " "
答案 0 :(得分:3)
不确定您的 HomePage 是什么,但它似乎是全局变量或包名称。 任何一个都意味着您的Web应用程序的每个用户共享相同的内存存储(变量)以获得测试结果。
如果您想要保存所有用户,这不是正确的方法。检测结果。您应该有一种方法来识别不同的用户(即让用户登录),这样您就可以为不同的用户显示不同的结果,并将结果保存在数据库或python词典中。
另一种方法是将结果保存在cookie中,cookie数据保存在客户端,因此不同的用户会有所不同。
答案 1 :(得分:0)
属性值为HomePage共享,并且相互重写。相反,你应该创建一个类的实例。
答案 2 :(得分:0)
为防止人们看到其他人的答案,您需要一个识别系统。一个简单的用户名/密码组合就行了。然后,您可以创建一个简单的数据库表来存储它,以及它们的分数。您没有让我们看到主页,所以我无法告诉您如何实例化它,或者结构是什么样的,但是您需要一个ID系统。