メソッド内でif、elif、else文を使用しています。コードを実行すると、if、elif、またはelseは実行されませんが、elif文をコメントアウトすると、デフォルトでelseが期待通りにデフォルト設定されます。if、elif、else if、elif、else文は実行されません
def message(response):
args.pop(0)
if com_text == "trivia":
# triviaActive will be False
if triviaActive:
# Performs action
return True
# args[0].lower() is not equal to 'start'
elif args[0].lower() == "start" and not triviaActive:
# Performs action
return True
# So it should defaults to this else
else:
# Performs action
return True
予期せぬ結果をもたらすif、elif、elseステートメントのチェーンの上にいくつかのコメントを追加しました。このような状況では、elseステートメントをデフォルトにする代わりに、メソッドの残りの部分を実行しないでメソッドから戻ります。 if、elif、else文の中でprintステートメントを使ってみしようとしましたが、プログラムはそれらを実行しません。
(編集) 私はif、elifなどを簡略化しました。この単純化されたバージョンでも、私はまだ私のelifに問題があります。また、popメソッドを使用してargsの値をポップし、それを問題にする可能性のある空にしていることを言及したいと思います。
インデントを確認しましたか?最後の 'elif'と' else'は必要以上に1つのタブでインデントされているようです。 –
@GeorgeBouインデントをチェックしても問題ありません。 pycharmを使用するので、シンタックスやインデントの問題のようには見えません。 – Mac18
インデント用にスペースとタブを混ぜていることもあります。 Python 2はタブを8つのスペースに相当するものとして解釈します。これは、エディタで異なるスペースが表示されていると非常に混乱する可能性があります(例:4スペースに相当)。 Python 3では、コードの同じ部分にタブとスペースを混在させることはできませんので、コードを修正してどちらか一方のみを使用するようにしてください(おそらく、 。 – Blckknght