我在弗拉斯克做一个井字饼是为了学习。电路板表示为字典,是一个全局变量。我想有一个按钮,"重置"板为空,这样用户就可以再次播放,但我的代码不起作用(它执行时没有错误,但板保持不变)
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> 1 </h1></td>
{% endif %}
{% if theBoard[2]!=' ' %}
<td><h1>{{ theBoard[2] }} </h1></td>
{% else %}
<td><h1> 2 </h1></td>
{% endif %}
{% if theBoard[3]!=' ' %}
<td><h1>{{ theBoard[3] }} </h1></td>
{% else %}
<td><h1> 3 </h1></td>
{% endif %}
<tr id="row2">
{% if theBoard[4]!=' ' %}
<td><h1>{{ theBoard[4] }} </h1></td>
{% else %}
<td><h1> 4 </h1></td>
{% endif %}
{% if theBoard[5]!=' ' %}
<td><h1>{{ theBoard[5] }} </h1></td>
{% else %}
<td><h1> 5 </h1></td>
{% endif %}
{% if theBoard[6]!=' ' %}
<td><h1>{{ theBoard[6] }} </h1></td>
{% else %}
<td><h1> 6 </h1></td>
{% endif %}
<tr id="row3">
{% if theBoard[7]!=' ' %}
<td><h1>{{ theBoard[7] }} </h1></td>
{% else %}
<td><h1> 7 </h1></td>
{% endif %}
{% if theBoard[8]!=' ' %}
<td><h1>{{ theBoard[8] }} </h1></td>
{% else %}
<td><h1> 8 </h1></td>
{% endif %}
{% if theBoard[9]!=' ' %}
<td><h1>{{ theBoard[9] }} </h1></td>
{% else %}
<td><h1> 9 </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)
您使用了==
,它用于返回True
或False
的比较,您需要的是=
运算符(赋值运算符,单个等号),因此:theBoard[i] = ' '
下面的代码导致了我所看到的错误:
theBoard[i] == ' '
上面实际上是在执行比较而不是分配,将其更改为:
theBoard[i] = ' '