我编写了一个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
有谁知道我该怎么做才能解决这个问题? 每次都会生成新的数字
注意:这不是类型错误,它是逻辑错误
答案 0 :(得分:0)
if input_field["input"].value == answer:
试试这个:
if input_field["input"].value.strip() == str(answer):
每次调用时,您的脚本都会生成新的数字:
一种可能性(如果您考虑用户,不会使用网页源进行调整)将第一步中生成的随机数写入<input type="hidden" name="x" value="123"/>
标记,并在评估时将其考虑在内答案。
答案 1 :(得分:0)
如果cgi.FieldStorage()是一个字符串 - &gt;字符串映射,你必须转换输入:
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"
答案 2 :(得分:0)
在检查用户输入之前,您会生成新的问题和答案。
您应该将问题和/或答案存储在用户的会话中(在服务器端,以便用户不会作弊)并使用它来与输入进行比较。