1

Wave Robot python apiv2 を使って実験/少し楽しんでいます。

正常に動作するロボット用の小さな 8ball アプリを作成しましたが、今はトリビア アプリを作成しようとしています。

Python でプログラミングしたことはありませんが、構文は正しいと確信しています。関連するコードは次のとおりです。

elif (bliptxt == "\n!strivia"):
  reply = blip.reply()
  if (triviaStatus != "playing"):
   reply.append("Trivia Started!")
   triviaStatus = "playing"
  else:
   reply.append("Trivia is already running!")
elif (bliptxt == "\n!etrivia"):
  reply = blip.reply()
  if (triviaStatus == "playing"):
   reply.append("Trivia Ended!")
   triviaStatus = "stopped"
  else:
   reply.append("Trivia is not running! To start trivia, type !strivia")
else: (snipped out)

基本的には、誰かが「strivia」をブリップすると、ボットが誰かがプレイしたいことを認識し、最初に triviaStatus という変数をチェックして、既にプレイしているかどうかを確認し、そこから移動できるように機能させたいと考えています。かなり単純なもの。

これが機能するためには (実際、このコードはこの問題をテストするためのものです)、変数は効果的に php の $_SESSION 変数のようにする必要があります。つまり、誰かがブリップするたびに変数の値を記憶します。毎回リセットされません。

それにもかかわらず、そうであるかどうかにかかわらず(そうでない場合は、変数設定をtxtファイルなどに保存することで同じことができると思います)上記のコードがまったく機能しないため、私は困惑しています。つまり、ロボットは !strivia または !etrivia で応答していません。変数が保存されなかった場合、ロボットは「Trivia Started」または「Trivia is not running!」と応答する必要があります。毎回。ただ、まったく返事がありません。

triviaStatus のチェックを外すと、ロボットは応答します。しかし、それでは論理がなく、質問をテストすることはできません.

また、返信する !trivstatus を作成してみました

"Trivia status is " + triviaStatus

しかし、それも窒息しました。triviaStatus を使用するたびにボットが死んでしまうのはなぜですか? triviaStatus を正常に設定できることに注意してください (返信しても出力が何であるかを確認することはできません....)

つまり、これを要約すると...上記のコードは機能しませんが、次のコードは機能します:

elif (bliptxt == "\n!strivia"):
  reply = blip.reply()
  reply.append("Trivia Started!")
  trivia_status = "playing"
elif (bliptxt == "\n!etrivia"):
  reply = blip.reply()
  reply.append("Trivia Ended!")
  trivia_status = "stopped"

ありがとう!

4

1 に答える 1

1

に名前を変更triviaStatusし、最初に使用する前にバインドするなど、何らかの値があるtrivia_statusことを確認する必要があるようです。そうしないと、 /がオブジェクトを参照していないために、コードで例外が発生したり、例外が発生したりする可能性があります。trivia_statusNoneUnboundLocalErrorNameErrortriviaStatustrivia_status

于 2010-05-18T20:26:03.917 に答える