1

メソッド eval について質問があります。最初は、フォームからのユーザー入力の回答を処理するために別の Def を作成したかったのです。問題は、ローカル変数を別の def に渡す方法がわからないため、メソッドが機能しないことです。とにかく別の関数ではランダム値が異なります。

基本的に、ran_puzz はデータベースから "2+2" などの値を持つランダムなパズルを引き出します。

rand_puzz = Puzzles.objects.get(id = random_index).パズル

rand_puzz を別の定義に渡す方法がわからなかったので、変数とロジックを "play" という名前の定義内に保持し、"message と ran_puzz" のような複数の値を返すことにしました。

「if eval(rand_puzz)== user_sub_ans;」という行が表示された場合 // これにより構文エラーが発生します

URL:

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 に答える