3

GoogleのAppEngineの使い方を学ぶのに役立つ、数字を推測するゲームを作成しています。現在の回答を乱数としてデータストアに保存します。ユーザーが推測するたびに、GqlQueryで答えを引き出し、ユーザーの推測と比較したいと思います。GqlQueryを使用して回答を取得すると、「なし」が返されます。代わりに、乱数を取得するために変更する理由や内容がわかりません。

ここに答えを保存します-

class Answer(db.Model):
    ans = db.IntegerProperty()

ユーザーが新しいゲームを作成するときに乱数を保存する方法は次のとおりです-

thisanswer =(random.randint(1, 100))
answer = Answer(ans = thisanswer)
answer.put()

そして、私はユーザーが推測を提出したときに答えを引き出して、このように彼らの推測と比較できるようにします-

q = db.GqlQuery("SELECT * FROM Answer")
q = q.fetch(1)
for p in q:
    answer = p.ans

だから私が試してみると

if guess > answer:
    msg = "Too high!"
elif guess < answer:
    msg = "Too low!"

など。「高すぎます!」というメッセージが表示されます。毎回。そこで、「高すぎる!」を変更しました。これへのメッセージ-

msg = "Too high! " + str(answer)

そして私が得るものは-

「高すぎる!なし」

このコードが「None」の値を返すのはなぜですか?取得する予定の乱数を取得するために、何を変更することをお勧めしますか。私はデータストアのAppEnginePythonドキュメントをフォローしていますが、明らかに何かを見落としています。これについての洞察に感謝します。

4

1 に答える 1

2

データベースに回答がない可能性があります。次の方法で確認します。

msg = "Total answers in database: " + str(Answer.all().count())

データベースで最初の回答を取得するためのより洗練された方法は次のとおりです。

answer = Answer.all().get()
# or (equivalent)
answer = db.GqlQuery("SELECT * FROM Answer").get()

if answer is not None:
  number = answer.ans
else:
  number = None
于 2011-08-17T18:15:37.873 に答える