python 神社测验

python quiz with jinja

我正在学习 python,为了练习,我必须用 jinja 做一个测验。 对于测验,我必须构建一个随机函数,以便问题是随机的。但我的问题是我的代码 运行 不正确。使用我的代码,我得到错误 "TypeError: list indices must be integers, not NoneType" 有人有小费吗?它是如何工作的?

#!/usr/bin/env python
import os
import jinja2
import webapp2
import random


template_dir = os.path.join(os.path.dirname(__file__), "templates")
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), autoescape=False)

class BaseHandler(webapp2.RequestHandler):

def write(self, *a, **kw):
    return self.response.out.write(*a, **kw)

def render_str(self, template, **params):
    t = jinja_env.get_template(template)
    return t.render(params)

def render(self, template, **kw):
    return self.write(self.render_str(template, **kw))

def render_template(self, view_filename, params=None):
    if not params:
        params = {}
    template = jinja_env.get_template(view_filename)
    return self.response.out.write(template.render(params))



class MainHandler(BaseHandler):


  def get(self):
        city = cities[secret]
        return self.render_template("index.html", params={"picture" : city.picture, "country" : city.country})

    def post(self):
        capital = self.request.get("capital")
        city = cities[secret]
        if capital == city.name:
            return self.write("That's right :)")
        else:
            return self.write("Sorry, it's wrong")

    class City(object):
        def __init__(self, name, country, picture):
            self.name = name
            self.country = country
            self.picture = picture

cities = [City (name="Vienna""Berlin", country="Austria""Germany", picture="http://www.mpnpokertour.com/wp-content/uploads/2015/08/Slider-Vienna.png""http://polpix.sueddeutsche.com/bild/1.1406949.1355282590/940x528/berlin-staedtetipps-szkorrespondenten.jpg")]
secret = random.seed(len(cities))

app = webapp2.WSGIApplication([
    webapp2.Route('/', MainHandler),
], debug=True)
secret = random.seed(len(cities))

这会将 secret 设置为 None,因为种子函数 returns 没有。 您可能感到困惑 seed with randint。种子用于初始化随机数生成器(通常不需要,因为 python 会自动执行),而 randint 会选择一个随机数并 returns 它。

secret = random.randint(0, len(cities) - 1)

→ 这会将 secret 设置为介于 0 和城市数(减一)之间的随机整数。