問題の原因を知らないので、どのように質問を語りますかわかりません。私はグローバル変数を増やすことは、それがHerokuに配備されているときに問題を引き起こしていると思います。python3 - グローバル変数を増やすと、ヒロクにデプロイされたときにボットがレスポンスをランダム化させます
私は、この質問を順番に質問する必要があるボットを持っています。私はそれを動作させることができた、私はマシン上でそれをテストするとうまくいく。しかし、BotがHerokuに配備されたとき、それはナッツになり、ランダムな質問をし、無秩序の事実を順番どおりに示さない。ここで
は、それが
question_dict = {
'Locq0':[{'question':"Some question 0",'options':(["Continue","@continue"])}],
'Locq1':[{'question':"Some question 1",'options':(["Continue","@continue"])}],
'Locq2':[{'question':"Some question 2",'options':(["Continue","@continue"])}],}
質問はdictの内部にあるどのように動作するかです。だから私は関数を作成して、その辞書をループしました。
def main():
if user_payload == "@continue":
increment()
counter = 0
def increment():
global counter
if counter <= len(question_dict):
counter += 1
quiz(counter)
def quiz(counter):
question = question_dict['Locq{}'.format(counter)][0]['question']
option = question_dict['Locq{}'.format(counter)][0]['options']
# display the question and option
print(question)
print(option)
私はユーザーから正解を得るたびに、カウンタをインクリメントし、現在のカウンタ値をクイズ関数に渡します。例えばについて
:ユーザーは、カウンタは1だけインクリメントされ続けるボタンをクリックし、クイズに現在のカウンタ値を合格した場合、初期カウンタが0に設定されている
()は、次にクイズ機能は次を表示します質問。カウンタ0 => question_dict [ 'Locq0']カウンタの
1 => question_dict [ 'Locq1']
そしてようにするため
。これは、dictにあるすべての質問に対して行われます。
私のマシンでテストすると、これはすべて正常に動作します。しかし、ボットが英雄に配備されたとき、私はカウンターに何が起こるのかわからない。私はまた、カウンタの値を表示するデバッグテキストを設定し、それはすべての時間を変更します。値が1で、次の値が3または4または0の場合もあれば、それ自体を繰り返す場合もあります。
カウンタはグローバル変数で、私はそれが英雄の問題を引き起こしていると思います。 これに何が間違っているのか、それが何をしているのか誰でも知っていますか?
なぜグローバルにする必要があるのですか?私はあなたが 'インクリメント'と呼ぶ場所も見ませんか? – roganjosh
「herokuに展開されました」とはどういう意味ですか?それはどのように役立つのですか?フラスコのようなフレームワークを使ったウェブアプリケーションとして? –
@bruno desthuilliersフラスコを使用しています –