2016-10-16 49 views
1

私は瞬時にPythonを学習しており、エクササイズのためにはジンジャーを使ってクイズを作成する必要があります。クイズのために 私はランダムな関数を構築しなければならないので、質問はランダムになります。私のコードは正しい方法で実行されないという問題があります。私のコードでは、私はエラー "TypeError:リストのインデックスは、整数でなければなりません、タイプなし" 誰もヒントを持っています、どのように動作するかもしれません?ジンジャーを使ったPythonクイズ

#!/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) 
+1

こんにちは、ようこそ。デバッグの助けを求めるときは、1)エラーがあれば、スタックトレースを含む完全なエラーを投稿する、2)望ましい動作を投稿する、そして3)[最小、完全で検証可能な例( http://stackoverflow.com/help/mcve)、投稿した内容は十分です)。 – spectras

+0

エラーコードは、get 街で、 ファイル「* \クイズの\ main.py」、35行です=都市は[秘密] はTypeError:リストインデックスがないNoneType – stillday

答えて

1
secret = random.seed(len(cities)) 

シード関数が何も返さないので、これは、Noneからsecretを設定します。 seedrandintを混同している可能性があります。シードは、乱数ジェネレータを初期化するために使用されます(通常はPythonが自動的に行うので不要です)。一方、randintは乱数を選択して返します。この→

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

0と都市の数(マイナス1)、までの間のランダムな整数にsecretを設定します。

+0

はあなたの助け:)のためにどうもありがとうございました、整数でなければなりません – stillday

関連する問題