Flask重置全局字典



我在弗拉斯克做一个井字饼是为了学习。电路板表示为字典,是一个全局变量。我想有一个按钮,"重置"板为空,这样用户就可以再次播放,但我的代码不起作用(它执行时没有错误,但板保持不变)

html按钮调用被执行的/reset,但是板值没有改变。

你知道我做错了什么吗?非常感谢!

theBoard = {1:' ', 2:' ', 3:' ', 4: ' ', 5:' ', 6: ' ', 7:' ', 8:' ', 9:' '}
@app.route('/reset', methods=["GET", "POST"])
def reset():
    for i in range (1,9):
         theBoard[i] == ' '
    return render_template("test.html", theBoard=theBoard)
@app.route('/play', methods=["GET","POST"])
def test1():
     return render_template("test.html", theBoard=theBoard)
@app.route('/play1', methods=["GET", "POST"])
def test():
    if gameover(theBoard):
       True
       return 'the game is over1'
    else:
        x = request.form['move']
        move = int(x)
        valid_moves = [1,2,3,4,5,6,7,8,9]
    if move not in valid_moves:
        return 'you did not specify a valid move, please try again!'
    elif theBoard[move] != ' ':
        return 'you can not play that space, it is taken'
    else:
        theBoard[move] = 'X'
        if gameover(theBoard):
            True
            return 'the game is over2'
        if winning_X(theBoard):
        <and much more code - this part works>

html:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<div class="enter name">
   <form action="/play1" method="POST">
    <lable>Please specify your move (1,2,3,4,5,6,7,8,9)</lable>
    <input type="number" name="move" value"">
    <input type="submit" value="Make your move!">
    </form>
</div>
<div>
<table border="1">
<tr id="row1">

    {% if theBoard[1]!=' ' %}
    <td><h1>{{ theBoard[1] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;1&nbsp;</h1></td>
    {% endif %}
    {% if theBoard[2]!=' ' %}
    <td><h1>{{ theBoard[2] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;2&nbsp;</h1></td>
    {% endif %}
    {% if theBoard[3]!=' ' %}
    <td><h1>{{ theBoard[3] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;3&nbsp;</h1></td>
    {% endif %}
<tr id="row2">
    {% if theBoard[4]!=' ' %}
    <td><h1>{{ theBoard[4] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;4&nbsp;</h1></td>
    {% endif %}
    {% if theBoard[5]!=' ' %}
    <td><h1>{{ theBoard[5] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;5&nbsp;</h1></td>
    {% endif %}
    {% if theBoard[6]!=' ' %}
    <td><h1>{{ theBoard[6] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;6&nbsp;</h1></td>
    {% endif %}
<tr id="row3">
    {% if theBoard[7]!=' ' %}
    <td><h1>{{ theBoard[7] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;7&nbsp;</h1></td>
    {% endif %}
    {% if theBoard[8]!=' ' %}
    <td><h1>{{ theBoard[8] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;8&nbsp;</h1></td>
    {% endif %}
    {% if theBoard[9]!=' ' %}
    <td><h1>{{ theBoard[9] }} </h1></td>
    {% else %}
    <td><h1>&nbsp;9&nbsp;</h1></td>
    {% endif %}
</table>
</div>
<div class="reset">
<form action="/reset" method="GET">
    <lable>Do you wanna play again?</lable>
    <button>Play!</button>
</form>
</div>
</body>
</html>
{% endblock %}

html按钮调用被执行的/reset,但是板值没有改变。

def reset():
    for i in range (1,9):
         theBoard[i] == ' '   # <--- This line
    return render_template("test.html", theBoard=theBoard)

您使用了==,它用于返回TrueFalse的比较,您需要的是=运算符(赋值运算符,单个等号),因此:theBoard[i] = ' '

下面的代码导致了我所看到的错误:

theBoard[i] == ' '

上面实际上是在执行比较而不是分配,将其更改为:

theBoard[i] = ' '

相关内容

  • 没有找到相关文章

最新更新