1

我对方法 eval 有疑问,我最初想创建一个单独的 Def 来处理来自表单的用户输入答案。问题是该方法不起作用,因为我不知道如何将局部变量传递给另一个 def,因为无论如何,另一个函数中的随机值会有所不同。

本质上,ran_puzz 从数据库中提取一个随机谜题,其值类似于“2+2”等。

rand_puzz = Puzzles.objects.get(id = random_index).puzzle

所以我想,因为我不知道如何将 rand_puzz 传递给另一个 def,所以我决定将变量和逻辑保留在 def 中称为“play”并返回多个值,例如“message and ran_puzz”

如果您看到“if eval(rand_puzz)== user_sub_ans;”行 // 这会导致语法错误

网址:

url(r'^play/$', 'mathgame3.views.play'),

VIEWS: def play(请求)

if request.user.is_authenticated():
    number_of_records = Puzzles.objects.count()
    random_index = int(random.random()*number_of_records)+1
    rand_puzz = Puzzles.objects.get(id = random_index).puzzle
    user_sub_ans = request.GET['answer']    
    if eval(rand_puzz)== user_sub_ans;
    message = 'correct'
    else:
    message = 'incorrect'
    return render(request, 'play.html', {'rand_puzz': rand_puzz, 'message': message})
else:
    return render_to_response('home.html')

Html:只是用户输入谜题答案的表单中的一些代码。

    <form action="/play/" method = "get">
        <table style="margin-left:auto; margin-right:auto; width:auto;">
<table style="margin-left:auto; margin-right:auto; width:auto; border:solid 1px">
<tr><td><label for="username">Question:</label></td>
<td>{{rand_puzz}}</td></tr>
<tr><td><label for="answer">Answer:</label></td>
<td><input type="number" name="answer" value="" id="answer"></td></tr>
<td> The answer is: {{message}}</td></tr>
<tr><td></td><td><input type="submit" value="Submit"/></td></tr>
</table>
        </table>
    </form>

我将不胜感激。

4

1 回答 1

0

这可能应该是这样的:

if eval(rand_puzz)== user_sub_ans:
     message = 'correct'
else:
     message = 'incorrect' 

puzzle字段不会从我希望的任何用户输入中获取其值。

于 2013-08-13T00:02:52.267 回答