我有以下代码。它工作正常,但当players
列表的长度变为0时,我的网页变为空白,并且我的终端(服务器)中出现IndexError: list index out of range
错误。我希望在self.redirect('/')
列表变空时将服务器重定向到players
。
def choose_random_player(list):
return random.choice(list)
class GuessPlayer(Handler):
players = ['sanchez', 'welbeck', 'giroud', 'ozil', 'ramsey']
random_player = choose_random_player(players)
score = 0
def get(self):
self.render("guessplayer.html",
random_player=GuessPlayer.random_player,
score=GuessPlayer.score)
def post(self):
user_answer = self.request.get("player-name")
if user_answer == GuessPlayer.random_player:
GuessPlayer.score += 1
GuessPlayer.players.remove(GuessPlayer.random_player)
GuessPlayer.random_player = choose_random_player(GuessPlayer.players)
self.render("guessplayer.html",
random_player=GuessPlayer.random_player,
score=GuessPlayer.score)
else:
self.render("guessplayer.html",
random_player=GuessPlayer.random_player,
score=GuessPlayer.score)
html表单:
{% extends 'base.html' %}
{% block content %}
<div class="row">
<div class="col-md-12 text-center">
<h4>Enter The Player Name</h4>
<div class="thumbnail">
<div class="score">Score: {{score}}</div>
<img src="../images/{{random_player}}.jpg" alt="...">
<form method="post">
<input type="text" name="player-name">
<br><br>
<input type="submit" class="btn btn-primary">
</form>
</div>
</div>
</div>
{% endblock %}
答案 0 :(得分:0)
我猜测当players
为空列表时,choose_random_player(players)
会引发IndexError
。
如果您愿意,可以捕获此异常并将用户重定向到/
,但这有点难看。
def get(self):
try:
random_player = choose_random_player(players)
except IndexError:
self.redirect('/')
self.render(...)
更干净的版本是在选择随机播放器之前检查players
是否为空列表。
def get(self):
if len(players) == 0:
self.redirect('/')
random_player = choose_random_player(players)
self.render(...)
您也必须在post
处理程序中编写类似的检查。