如何解决比较用户输入与随机生成的数据
| 我已经编写了python cgi脚本来生成随机数并将其相加 而不是要求用户给出答案。 但是,即使用户回答是正确的,也给他带来了错误。答案将不正确。 问题出在流程中:#!/usr/bin/python2.7
import cgi,sys,random
sys.stderr = sys.stdout
input_field = cgi.FieldStorage()
x = random.randrange(1,20)
y = random.randrange(1,20)
answer = x + y
print(\"Content-type: text/html\\n\")
print (\"<center>\")
if \"input\" in input_field:
if input_field[\"input\"].value == answer:
print(\"Content-Type content=text/htm\")
print \"<br><br><b> Good :D </b\"
else:
print \"<br><br><b> Wrong :( </b><br><br>\"
print \"Your Answer :\",input_field[\'input\'].value
print \"<br>\",\"Correct Answer\",answer
else:
print \"<br><br>\",x,\"+\",y,\"<br><br>\"
print(\"\"\"
<form method=POST action=\"\">
<TR>
<TH align=right>Answer:<TD>
<input type=text name=input>
<TR>
\"\"\")
print (\"</center>\")
例如:
3 + 9
答案:[12]
错误的:(
您的答案:12
正确答案17
有谁知道我该怎么办才能解决流量问题?每次都会产生新的数字
注意:这不是类型错误,而是逻辑错误
解决方法
if input_field[\"input\"].value == answer:
试试这个代替:
if input_field[\"input\"].value.strip() == str(answer):
脚本每次调用都会生成新的数字:
首次通话,产生并显示随机数
第二次呼叫,将生成新的随机数并将其与用户输入的内容进行比较(他的答案基于先前生成的数)。
一种可能性(如果您考虑不修改网页源代码的用户),是将第一步中生成的随机数写入<input type=\"hidden\" name=\"x\" value=\"123\"/>
标签,并在评估答案时将其考虑在内。
,如果cgi.FieldStorage()是字符串->字符串映射,则必须转换输入:
try:
# first cast the string to an int
user_input = int(input_field[\"input\"].value)
except ValueError:
# string
print(\"you must enter an integer\")
if user_input == answer:
print(\"Content-Type content=text/htm\")
print \"<br><br><b> Good :D </b\"
,在检查用户输入之前,您将生成一个新的问题和答案。
您应该将问题和/或答案存储在用户的会话中(在服务器端,这样用户就不会作弊),然后将其与输入内容进行比较。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。