0

「テンプレート」文字列、2つの整数(範囲を作成)、および単語のリストを入力として受け取るWebアプリの「イテレーター」を(GAE経由で)作成しようとしています。ユーザーは、数字を繰り返す文字列に「#」を挿入し、単語を繰り返す文字列に「@」を挿入します。

入力:

template string: "Person#Likes@"
starting integer: 1
ending integer: 3
list of words: "Apples, Bananas, Oranges"

出力:

Person1LikesApples
Person1LikesBananas
Person1LikesOranges
Person2LikesApples
Person2LikesBananas
Person2LikesOranges
Person3LikesApples
Person3LikesBananas
Person3LikesOranges

ユーザーが「次へ」などのタイトルの送信ボタンをクリックしたときに、出力が結果テキストボックスに表示されるようにします。キッカーは、Person1が最初にボタンをクリックしたときに、Person1のアイテムのみを出力に表示することです。次に、2回目にクリックすると、Person2のアイテムのみが表示されます。

ジェネレーターを使用して簡単なPythonプログラムを作成しましたが、これをGoogleAppEngineアプリに組み込むのに問題があります。

これが私の関数です:

def g(f, text, lower, upper, list):
    for num in range(int(lower),int(upper)+1):
        yield f(text.replace('#', str(num)), list)

def f(text, list):
    for i in list:
        print text.replace('@', i)

およびその他のコード:

if text and lower and upper and words:  
    result = g(f, words, lower, upper, list)
    self.render_iterator(result=next(result))

(^このコードは、他の値を入力すると結果テキストボックスに「なし」を返しますが、少しいじるとジェネレーター式として認識されます)

私が行方不明になっているこれを行う別の方法はありますか?代わりにGQLとGoogleデータストアを利用する必要がありますか?私のコードをもっと見る必要があるかどうか教えてください。

ありがとう!

4

2 に答える 2

1

まず、AppEngineの外部でこれを行う方法を理解することをお勧めします。これはプログラミングの非常に単純な問題ですが、それを理解するのに問題がある場合は、Webアプリ内で実行しようとするのは苦痛です。ソリューションに慣れたら、AppEngineに適用できます。

于 2012-06-02T17:56:21.900 に答える
0

f()戻り値がないため、を返しますNone。変更する必要があります

print text.replace('@', i) 

return text.replace('@', i)
于 2012-06-02T02:32:30.960 に答える